在不关闭主窗口的情况下调用函数- Python Tkinter

djp7away  于 2023-01-03  发布在  Python
关注(0)|答案(1)|浏览(163)

我试过创建一个软件。在这个软件中有一个菜单小部件与功能按钮,打开功能和小部件。但是,我注意到,要继续脚本,有必要关闭主窗口(菜单)。我已经创建了一个例子,你理解我的问题。

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()。

von4xj4u

von4xj4u1#

问题是你多次调用mainloop,并且创建了Tk的多个示例,当你调用mainloop时,它不会返回,直到那个窗口被破坏,这是tkinter工作的一个基本方面。
解决方案是不要创建Tk的一个以上示例,也不要调用mainloop一次以上。如果需要多个窗口,请创建Toplevel的示例。同样,总共只调用mainloop一次,而不是每个窗口调用一次。

相关问题