如何在Tkinter中打开同一文件的多个窗口?

时间:2020-09-21 02:38:30

标签: python python-3.x tkinter python-import

我在python中有一个简单的应用程序。当我单击一个按钮时,它应该多次打开同一文件。但是,经过两次该程序将无法再打开任何窗口。

到目前为止,这是我对file1的代码:

from tkinter import *

root = Tk()
root.geometry("600x600")

def newWin():
   import file1

button = Button(root, text="Open Window of same file", command=newWin)
button.pack()

root.mainloop()

单击按钮一次后,它将在新窗口中打开相同的文件,但是当我单击该窗口中的按钮时,它将不起作用。我该如何解决?

2 个答案:

答案 0 :(得分:1)

import file1仅导入file1并在file1内执行一次代码。再次调用import file1时,将不会发生任何事情,因为file1已被导入。

要解决此问题,您可以将代码放入函数中,并在导入file1后调用该函数:

# file1.py
import tkinter as tk

def main():
    root = tk.Tk()
    root.geometry('600x600')

    def new_win():
        import file1
        file1.main()

    button = tk.Button(root, text='Open Window of same file', command=new_win)
    button.pack()

    root.mainloop()

if __name__ == '__main__':
    main()

但是,在file1中导入file1并不是一个好习惯,应该避免。


以上代码仅是解决导入问题的演示。实际上,您不需要在import file1内部调用file1,只需调用main()

# file1.py
import tkinter as tk

def main():
    root = tk.Tk()
    root.geometry('600x600')

    button = tk.Button(root, text='Open Window of same file', command=main)
    button.pack()

    root.mainloop()

if __name__ == '__main__':
    main()

答案 1 :(得分:-1)

您的按钮没有命令参数,否则将无效。

button = Button(root, text="Open Window of same file", command = newWin)

此外,在导入文件时更改添加.py扩展名:

import file1.py
相关问题