0
試圖讓我的腦海中圍繞如何在寫入條目後啓用按鈕的狀態。我正在嘗試一個新窗口Toplevel。其中,有三個入口小部件。填充值後,應啓用「運行」按鈕。我知道我必須使用trace方法將觀察者回調附加到變量。這是我迄今爲止所做的。試圖在所有條目更新後嘗試更改按鈕的狀態
class appl:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master, width=800, height=700)
self.var = tk.IntVar()
self.func1 = tk.Radiobutton(self.frame, text='fun1', value=1, variable=self.var,command=self.new_window)
self.func1.pack()
self.frame.pack()
def new_window(self):
self.newWindow = tk.Toplevel(self.master)
self.intvar1 = tk.IntVar()
self.intvar2 = tk.IntVar()
self.intvar3 = tk.IntVar()
self.ent = tk.Button(self.newWindow, text='ENTER', state='disabled', command=self.validate_check).grid(row=3, column=1)
self.intvar1.trace('w', self.validate_check)
self.intvar2.trace('w', self.validate_check)
self.intvar3.trace('w', self.validate_check)
self.X = tk.Entry(self.newWindow,textvariable=self.intvar1)
self.Y = tk.Entry(self.newWindow, textvariable=self.intvar2)
self.Z = tk.Entry(self.newWindow, textvariable=self.intvar3)
self.X.grid(row=0, column=1)
self.Y.grid(row=1, column=1)
self.Z.grid(row=2, column=1)
tk.Label(self.newWindow, text=" X").grid(row=0)
tk.Label(self.newWindow, text=" Y").grid(row=1)
tk.Label(self.newWindow, text=" Z").grid(row=2)
def validate_check(self, *args):
x = self.intvar1.get()
y = self.intvar2.get()
z = self.intvar3.get()
if x and y and z:
self.ent.config(state=NORMAL)
else:
self.ent.config(state=DISABLED)
def main():
root = tk.Tk()
app = appl(root)
root.mainloop()
if __name__ == '__main__':
main()
工作正常,謝謝你! –