2017-09-18 71 views
2

我已經在python 2.7中編寫了一個代碼,它實現了「optionmenu」小部件。我遇到了一個問題,我已經給出了元組中的六個值,但是當我選擇另一個選項而不是「Gmail」時,我在下拉列表中只看到五個值。誰能告訴我我的錯誤?使用tkinter中的optionmenu小部件的錯誤

from Tkinter import * 
import ttk 

root = Tk() 

choices = ("Gmail", "Outlook/Hotmail", "Yahoo", "Comcast", "AT&T", "Verizon") 
dropdown_var = StringVar() 
dropdown_var.set(choices[0]) # set default value 

def data(*args): 
    value = dropdown_var.get() 
    print(value) 

l = ttk.Label(root, text="Select your e-mail provider : ") 
l.pack(side="left") 

option = ttk.OptionMenu(root, dropdown_var, *choices) 
option.pack(side="left", padx=10, pady=10) 

b = ttk.Button(root, text="Click", command=data) 
b.pack(side="bottom") 

root.mainloop() 

回答

1

您面臨的問題與您定義OptionMenu小部件的方式有關。

實際上,它與tkinter OptionMenu不同,因爲您在聲明中設置了默認值。因此,當您解壓縮值時,第一個索引"Gmail"將作爲小部件的default參數,其他參數是選項值。

(另外,你不需要之前設置dropdown_var

試試這個版本:

choices = ("Gmail", "Outlook/Hotmail", "Yahoo", "Comcast", "AT&T", "Verizon") 
dropdown_var = StringVar() 

def data(*args): 
    value = dropdown_var.get() 
    print value # no bracket for python2 

l = ttk.Label(root, text="Select your e-mail provider : ") 
l.pack(side="left") 

# the 3rd parameter is the default value  
option = ttk.OptionMenu(root, dropdown_var, choices[0], *choices) 
option.pack(side="left", padx=10, pady=10) 
相關問題