我试过创建一个软件。在这个软件中有一个菜单小部件与功能按钮,打开功能和小部件。但是,我注意到,要继续脚本,有必要关闭主窗口(菜单)。我已经创建了一个例子,你理解我的问题。
from tkinter import *
#Create Fuction that open new fuctions and widget
def test():
#Open a new widget
def fun_test_1():
top_level = Tk()
def test1():
top_level1 = Toplevel()
top_level1.title('new1')
top_level1.mainloop()
Button(top_level, text='test1',command=test1).pack()
top_level.mainloop()
fun_test_1()
#Before, open the second widget
def fun_test_2():
print('def fun_test_2(): works!')
top_level = Tk()
def test1():
top_level1 = Toplevel()
top_level1.title('new1')
top_level1.mainloop()
Button(top_level, text='Button', command=test1).pack()
top_level.mainloop()
fun_test_2()
root = Tk()
root.title('MASTER')
Button(root, text='Button',command=test).pack()
root.mainloop()
因此,我需要调用fun_test_2()而不关闭根部件
所有的函数我都试着把Tk()改成Toplevel()把Toplevel()改成Tk()。
1条答案
按热度按时间von4xj4u1#
问题是你多次调用
mainloop
,并且创建了Tk
的多个示例,当你调用mainloop
时,它不会返回,直到那个窗口被破坏,这是tkinter工作的一个基本方面。解决方案是不要创建
Tk
的一个以上示例,也不要调用mainloop
一次以上。如果需要多个窗口,请创建Toplevel
的示例。同样,总共只调用mainloop
一次,而不是每个窗口调用一次。