簡潔的Tkinter選項選單配置方法


OptionMenu小部件是一個下拉選單,顯示使用者可以選擇的一系列選項。它是Python圖形使用者介面(GUI)程式設計中常用的一個元件,通常與其他Tkinter小部件結合使用,以建立直觀且互動式的介面。

在本文中,我們將探討使用Python配置Tkinter OptionMenu小部件的簡潔方法。具體來說,我們將介紹:

  • OptionMenu小部件的基本語法

  • 如何將命令繫結到選擇

  • 定義選項及其對應命令的簡潔方法

在閱讀完本文後,您將深入瞭解如何在Python應用程式中使用OptionMenu小部件。

OptionMenu小部件的基本語法

在Tkinter中建立OptionMenu小部件的基本語法如下:

OptionMenu(master, variable, *options)
  • master是父小部件

  • variable是一個StringVar物件,它儲存當前選擇的選項

  • *options是要在選單中顯示的選項,用逗號分隔

示例

例如,讓我們建立一個基本OptionMenu,允許使用者選擇他們最喜歡的顏色:

from tkinter import *

root = Tk()
root.geometry("720x250")
root.title("Creating a basic OptionMenu Widget")

colors = ["Red", "Green", "Blue"]
selected_color = StringVar(value=colors[0])

color_menu = OptionMenu(root, selected_color, *colors)
color_menu.pack()

root.mainloop()

在此程式碼中,我們定義了一個顏色列表,並建立了一個名為selected_color的StringVar物件,它儲存當前選擇的顏色(最初設定為列表中的第一種顏色)。然後,我們建立一個名為color_menu的OptionMenu,它顯示顏色列表,使用selected_color變數來跟蹤當前選擇。最後,我們使用pack()方法將OptionMenu打包到主視窗中。

輸出

當我們執行此程式碼時,我們會看到一個顯示顏色列表的下拉選單:

將命令繫結到選擇

通常,我們希望在使用者從OptionMenu中選擇一個選項時執行一個函式。我們可以透過在建構函式中使用command引數將命令繫結到OptionMenu來實現這一點。

示例

例如,讓我們建立一個OptionMenu,它顯示一個動物列表,並在使用者選擇動物時將所選動物列印到控制檯:

from tkinter import *

root = Tk()
root.geometry("720x250")
root.title("Creating a basic OptionMenu Widget with Binding a Command to the Selection")

def show_selection(option):
   print(f"Selected option: {option.get()}")

options = ["Cat", "Fish", "Dog"]
selected_option = StringVar(value=options[0])

option_menu = OptionMenu(root, selected_option, *options, command=lambda option: show_selection(selected_option))
option_menu.pack()

root.mainloop()

輸出

當我們執行此程式碼時,我們會看到動物的下拉選單:

當我們選擇一個動物時,我們會看到相應的文字被列印到控制檯:

Selected option: Fish

定義選項和命令的簡潔方法

在許多情況下,我們可能需要在OptionMenu中顯示大量選項以及每個選項選擇的相應命令。在這種情況下,在建構函式中分別定義每個選項和命令可能會很麻煩。

相反,我們可以使用字典來定義選項和相應的命令,然後使用迴圈動態建立OptionMenu。這是一個演示此方法的示例:

示例

from tkinter import *

root = Tk()
root.geometry("720x250")
root.title("A Concise Way to Define Options and Commands in tkinter Option menu Widget")

def show_selection(option):
   print(f"Selected option: {option.get()}")

options = ["Option1", "Option2", "Option3", "Option4", "Option5"]
selected_option = StringVar(value=options[0])

option_menu = OptionMenu(root, selected_option, *options, command=lambda option: show_selection(selected_option))
option_menu.pack()

root.mainloop()

在此程式碼中,我們定義了一個名為options的字典,它將每個選項標籤對映到執行所需命令的相應lambda函式。我們還定義了一個selected_option變數,它儲存當前選擇的選項,最初設定為字典中的第一個選項。

然後,我們建立一個名為option_menu的OptionMenu,它顯示選項列表,使用selected_option變數來跟蹤當前選擇。我們使用pack()方法將OptionMenu打包到主視窗中。

最後,我們使用items()方法遍歷options字典,並使用OptionMenu的“menu”屬性上的add_command()方法動態建立每個選項並繫結其相應的命令。這種方法允許我們以簡潔易讀的方式定義大量選項和命令。

輸出

當我們執行此程式碼時,我們會看到選項的下拉選單:

當我們選擇一個選項時,我們會看到相應的文字被列印到控制檯:

Selected option: Option4

結論

在本文中,我們探討了使用Python配置Tkinter OptionMenu小部件的簡潔方法。我們介紹了OptionMenu小部件的基本語法,如何設定初始選擇的選項,如何將命令繫結到選擇,以及如何使用字典和迴圈以簡潔的方式定義選項及其相應的命令。透過使用這些技術,您可以建立直觀的Python互動式GUI,允許使用者輕鬆地從選項列表中進行選擇。

更新於:2023年12月4日

2K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.