[英]Tkinter toplevel window is not defined
我想知道是否有人可以告诉我是否可以使用外部函数更新顶层 windows。 我已经在下方复制了我的问题,我需要做的是使用 function updatelabel() 更新 Toplevel(master)。 我使用类似的外部 function 来更新 root 中的项目,这就像做梦一样。 但是,对于顶级 window,我总是能得到
NameError:未定义名称“newWindow”
我发现的唯一解决方法是在每次加载时使用 newWindow.destroy() 杀死 newWindow,但这种方法会使屏幕弹出然后再次关闭,这看起来不太漂亮。 任何帮助非常欢迎谢谢。
from tkinter import *
from tkinter.ttk import *
master = Tk()
master.geometry("200x200")
def updatelabel():
Label(newWindow,
text="I changed").pack()
def openNewWindow():
# Toplevel object which will
# be treated as a new window
newWindow = Toplevel(master)
# sets the title of the
# Toplevel widget
newWindow.title("New Window")
# sets the geometry of toplevel
newWindow.geometry("200x200")
# A Label widget to show in toplevel
Label(newWindow,
text="I want to change").pack()
button1 = Button(newWindow,
text="Click me to change label", command=updatelabel).pack()
btn = Button(master,
text="open a new window",
command=openNewWindow)
btn.pack(pady=10)
mainloop()
您的“newWindow”在您的“openNewWindow”function 中定义,因此它基本上只存在于其中,您可以通过在 function 之外定义“newWindow”或将其用作参数(只需将其添加到括号并在 function 本身的括号中为其命名)调用“updateLabel”
我认为这应该可行,尽管我还没有使用过 tkinter,所以如果不行请不要怪我
from tkinter import *
from tkinter.ttk import *
master = Tk()
master.geometry("200x200")
def updatelabel(newWindow):
Label(newWindow,
text="I changed").pack()
def openNewWindow():
# Toplevel object which will
# be treated as a new window
newWindow = Toplevel(master)
# sets the title of the
# Toplevel widget
newWindow.title("New Window")
# sets the geometry of toplevel
newWindow.geometry("200x200")
# A Label widget to show in toplevel
Label(newWindow,
text="I want to change").pack()
button1 = Button(newWindow,
text="Click me to change label", command= lambda: updatelabel(newWindow)).pack()
btn = Button(master,
text="open a new window",
command=openNewWindow)
btn.pack(pady=10)
mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.