2016-03-22 57 views
0

我想知道是否有一種方法來更新tkinter小部件的參數,一旦單擊按鈕。例如,Tkinter Widget屬性更新(使用ttk框架)

master = Tk() 
master.title("Create Bank Account") 
master.geometry("400x400+100+100") 
mainframe = ttk.Frame(master, padding=(3,3,12,12)) 
mainframe.grid(column=0, row=0, sticky=(N,W,E,S)) 
'''master.columnconfigure(0, weight=1) #defines where the frame expands 
master.rowconfigure(0, weight=1) 
ttk.Label(mainframe, text="Username: ", width=25).grid(column=0,row=0,sticky=(N,W,E,S)) 
ttk.Label(mainframe, text="Email: ", width=25).grid(column=0,row=1,sticky=(N,W,E,S)) 
ttk.Label(mainframe, text="Password: ", width=25).grid(column=0,row=2,sticky=(N,W,E,S)) 
UserEntTK=StringVar() 
Username= ttk.Entry(mainframe, textvariable=UserEntTK, width=20) 
Username.grid(column=1, row=0, sticky=(W,E)) 
UserEmailTK=StringVar() 
Email= ttk.Entry(mainframe, textvariable=UserEmailTK, width=20) 
Email.grid(column=1, row=1, sticky=(W,E))''' 
PassTK= StringVar() 
Password = ttk.Entry(mainframe, textvariable=PassTK, width=20, show="*") 
Password.grid(column=1, row=2, sticky=(W,E)) 
ttk.Button(mainframe, text="Show", command=show_pass).grid(column=1, row=2, sticky=N) 
Button(mainframe, text="Continue", command=master.destroy()).grid(column=1,row=4,sticky=N) 
master.mainloop() 

其中命令show_pass將Password小部件的show屬性從「*」值轉換爲基本顯示所有字符。上面的代碼是我編程的tk窗口,因此引號中的代碼與問題無關,但可能有助於更好地理解問題的目的和上下文。

此外,我是Python編程的初學者,因此程序結構中的所有更改(即是否要將所有內容轉換爲類)都是受歡迎的,因爲它可以幫助我學習。真的很感謝所有幫助:d

回答

2

我覺得你只是想configurePassword小部件,使show=""

def show_pass(): 
    Password.configure(show="") 

這將顯示點擊按鈕,但不允許改回當密碼,所以你可能需要一個Checkbutton代替:

def show_pass(): 
    Password.configure(show=show_option.get()) 

show_option= StringVar(master,"*") #could also use Password.cget("show") as initial value 

Checkbutton(mainframe,command=show_pass, 
      text="show password", 
      variable=show_option, 
      onvalue ="", 
      offvalue="*").grid(column=1, row=3, sticky=N) 

作爲一個側面說明,您所呼叫master.destroy()馬上強似方法本身的按鈕的command

# use this 
Button(... command=master.destroy).grid(...) 
# instead of this 
Button(... command=master.destroy()).grid(...) 
           # ^this calls it right away!! 
+0

謝謝你這麼多的幫助:d ...一直想知道爲什麼我的根窗口銷燬用來保持彈出錯誤.. 。 那謝謝啦! :d – LeroyJD