[英]tkinter ttk OptionMenu losing checkmark highlight when updating option list
[英]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.