【发布时间】:2018-11-12 15:19:24
【问题描述】:
我想制作一个有多个 tkinter 窗口的程序,但是我遇到了一些问题。我有一个包含一个按钮的主窗口。按下该按钮后,将打开一个顶层,其中包含通过用户输入一些数据的小部件。该顶层还包含一个按钮,一旦按下该按钮,顶层就会被销毁,并且引入的数据会从第一个按钮返回给事件调用的函数。主窗口被销毁,数据作为参数传递给将使用它的第三个窗口。
from tkinter import *
def third_window(data):
root = Tk()
lbl = Label(root, text=data)
lbl.place(x=20,y=20)
root.mainloop()
def second_window():
def event_btn(event):
e = entry.get()
if len(e) != 0:
root.destroy()
print(e)
return e
root = Toplevel()
root.geometry("400x400+200+200")
entry = Entry(root, width=15)
entry.place(x=30,y=30)
btn = Button(root, text="Send")
btn.bind("<Button-1>", event_btn)
btn.place(x=80, y=80)
root.wait_window()
root.mainloop()
def main():
def event_btn(event):
data = second_window()
print(data)
root.destroy()
third_window(data)
root = Tk()
root.geometry("200x200+100+100")
btn = Button(root, text="Test button")
btn.bind("<Button-1>", event_btn)
btn.place(x=50, y=50)
root.mainloop()
if __name__ == "__main__":
main()
遇到2个问题:顶层销毁后主窗口没有关闭,顶层数据没有返回。
【问题讨论】:
-
我在这里看到了几个问题。 1 是
root不在全局命名空间中。第二,您在这里创建了 2 个Tk()实例,而不是只使用一个。这很可能不是您想要做的。
标签: python events tkinter toplevel