tkinter,在主窗口中显示从子窗口的值
问题描述:
我想有一个窗口,例如开始值为“0”。然后,当我打开另一个窗口时,我希望能够在那里输入一个值,然后点击一个按钮(这里确定)我希望显示该值而不是“0”(或任何其他先前的值)。遗憾的是,最后一部分不起作用(点击OK后,值保持为零)。这是什么,我做错了?tkinter,在主窗口中显示从子窗口的值
另外,我可以放置在clsApp的内部?我没有这样做,因为我认为主循环将始终将其设置为起始值。 (诚然,我没有搜索这一个,所以我不介意,如果你能告诉我它GOOGEL)
import tkinter as tk
a=0
class clsApp(object):
def __init__(self):
self.root=tk.Tk()
self.root.title("MainWindow")
##Labels##
self.rootLabel=tk.Label(self.root, text="WindowAppExperiment", padx=100)
self.aLabel=tk.Label(self.root, text=a, padx=100)
##Buttons##
self.exit=tk.Button(self.root, text="Quit", fg="red", command=self.root.quit)
self.newWindow=tk.Button(self.root, text ="Edit", command=lambda:self.clsNewWindow(self.root).run())
def grid (self):
self.rootLabel.pack()
self.aLabel.pack()
self.exit.pack(side="left")
self.newWindow.pack(side="left")
def run(self):
self.grid()
self.root.mainloop()
self.root.destroy()
class clsNewWindow(object):
def __init__(self, Parent):
self.parent=Parent
self.top=tk.Toplevel()
self.top.title("SubWindow")
##Labels##
self.textLabel=tk.Label(self.top, text ="Enter Value", padx=100)
##Entyfields##
self.E1=tk.Entry(self.top)
##Buttons##
self.Cancel=tk.Button(self.top, text ="Cancel", command=self.top.quit)
self.OK=tk.Button(self.top, text ="OK", command=lambda:self.getValue(self.E1))
def grid(self):
self.textLabel.pack()
self.E1.pack()
self.Cancel.pack()
self.OK.pack()
def getValue(self, entField):
global a
print(entField.get()) #test
a=entField.get()
print(a) #test
self.parent.update()
def run(self):
self.grid()
self.top.mainloop()
self.top.destroy()
clsApp().run()
答
如果你把a
在那里与text=a
,它会看它得到只有一次价值,然后永远不会再次......除非你告诉它。您可以选择trace the variable,也可以在子窗口中更改主窗口中的变量:
def getValue(self, entField):
global a
print(entField.get()) #test
a=entField.get()
self.parent.alabel.config(text=a) # this right here
print(a) #test
self.parent.update()