我一直在編寫一個年度數據驗證程序,需要一些用戶輸入,並決定去tkinter路由。我爲用戶輸入屏幕創建了一個界面,並且必須創建其他界面,但是我在選擇完成後會破壞窗口以及變量的全球化。使用tkinter來分配一個全局變量並銷燬gui
所以理想情況下,程序運行,彈出窗口,進行適當的屬性選擇,該按鈕上的文本被傳遞給「assign」函數,該函數創建一個全局變量用於我的程序中,並且窗口消失。
現在,這段代碼的運行會導致錯誤:「TclError:can not invoke」按鈕「command:application has been destroyed」。
如果我註釋掉「mGui.destroy()」這一行,我可以手動選擇一個按鈕並關閉窗口,但無論如何「DRN」變量都會傳遞給變量「x」!
import sys
from Tkinter import *
def assign(value):
global x
x = value
mGui.destroy()
mGui = Tk()
mGui.geometry("500x100+500+300")
mGui.title("Attribute Selection Window")
mLabel = Label(mGui, text = "Please select one of the following attributes to assign to the selected Convwks feature:").pack()
mButton = Button(mGui, text = "CON", command = assign("CON")).pack()
mButton = Button(mGui, text = "MS", command = assign("MS")).pack()
mButton = Button(mGui, text = "DRN", command = assign("DRN")).pack()
mGui.mainloop() #FOR WINDOWS ONLY
獎金的問題:把所有的按鈕在同一行中與它們之間的空間,同時保持它們的中心。
這可能是http://stackoverflow.com/questions/5767228/tkin ter-button-not-working/5771787#5771787 –