2011-12-30 83 views
0

我對Tkinter很新,但開始嘗試在腳本中放置更復雜的GUI。所以這一定是非常基本的,但我無法弄清楚發生了什麼問題。Tkinter的主循環()自動調用按鈕函數

我想要的是非常簡單的,一堆數據輸入選項,並在底部退出並提交按鈕。似乎儘管mainloop()或其他東西一直運行按鈕的命令,沒有任何用戶輸入。因此,由於退出按鈕,該applet在它出現之前就被銷燬了。如果我把這些按鈕放在主循環()外面,那就沒有問題,但當然它沒有意義,並且按鈕不顯示。

button_exit = Tkinter.Button(root, text = 'Exit', command = root.destroy()) 
button_exit.grid(row=3, column=0, pady=10, sticky='E') 
button_query = Tkinter.Button(root, text = 'Query', command = intQuery()) 
button_query.grid(row=3, column=1, padx=10, sticky='E') 

root.mainloop() 

這基本上是代碼的問題領域。剩下的就是數據輸入字段,大部分腳本還沒有寫完。

在此先感謝。

回答

3

變化

command = root.destroy() 

command = root.destroy 

原因是這樣的:括號調用該方法,並被傳遞給方法之前,方法的參數進行評估。這就是爲什麼你的程序過早退出。

如果沒有括號,您將該方法引用爲對象,該對象可以傳遞給Tkinter.Button,存儲並在稍後按下該按鈕時調用。

然後與command = intQuery()一樣。

+0

這就是它精確地爲其+1' – vdbuilder 2011-12-30 22:41:21

+0

謝謝!這確實有道理,但永遠不會想到這一點。完美工作。 – wowohweewah 2011-12-30 22:47:48