簡體   English   中英

Tkinter 獲取 OptionMenu 選項列表

[英]Tkinter get OptionMenu Option List

我正在使用 Python 3,Tkinter 模塊。 我看過 ttk 庫,其中一個小部件有一個選項菜單。 很棒,但我想知道是否有辦法檢索菜單當前正在使用的選項列表。

在這個例子中:

Options_List=["option1","option2"]
My_Menu = OptionMenu(master, variable, *Options_List))

我知道這可能看起來微不足道。 只需檢索Options_List變量。 但是現在讓我們假設我正在制作大量選項(使用相同或不同的列表):

Options_List=["option1","option2","option3"]
Menu_List = []
for Option in range(3):
    My_Menu = OptionMenu(master, variable, *Options_List))
    Menu_List.append(My_Menu)
    Options_List.del(-1) #removes last item

我只是利用了這樣一個事實,即在分配 Option Menu 時,選項是Options_List變量的副本,而不是對它的引用,因此在執行代碼時,它們都引用了自己的Options_List版本。

選項輸出將產生:

Menu_List[0] -> ["option1","option2","option3"]
Menu_List[1] -> ["option1","option2"]
Menu_List[2] -> ["option1"]

現在你可以看到我不能只檢索Options_List ,因為每個選項菜單都有自己的列表來處理。

那么,有什么想法嗎? 有什么方法可以獲取我的第 n 個選項菜單正在使用的選項列表?

選項菜單只不過是一個帶有菜單的標准按鈕。 因此,要獲取選項菜單中的值,您只需獲取與選項菜單關聯的菜單,並使用菜單上可用的方法來獲取菜單上的項目。

例如,假設om代表選項菜單。 要獲取菜單,您可以執行以下操作:

menu = om['menu']

menu現在是對Menu對象的引用。 您可以使用index方法找出最后一項的index

    last_index = menu.index("end")

這樣,您就可以遍歷菜單中的項目。 如果需要標簽,可以使用entrycget獲取該屬性的值:

    values = []
    for i in range(last_index+1):
        values.append(menu.entrycget(i, "label"))

這樣, values將包含出現在菜單上的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM