在多个文件中导入类

时间:2019-10-06 09:13:30

标签: python class tkinter

我在Google上找不到关于此的解决方案... 所以我在python中用GUI编程,其中有两个窗口:一个主窗口和一个允许进行一些更改的临时窗口。主窗口位于main.py中,另一个位于tmp.py中。 从临时窗口中,我想要一个按钮,该按钮允许我返回主窗口。这意味着从tmp.py中,我必须在main.py中调用该窗口。 所以在main.py中,我有: 导入tmp

我认为tmp.py放置不正确: 进口主要 因为它将重新定义相同的类...所以您认为应该是正确的程序方式...我希望我自己已经足够清楚地描述起来并不那么容易...这可能就是为什么我无法做到这一点在Google上找到解决方案。

因此,基本上,代码应为: 在main.py

import tkinter as tk
import tmp

class MainStr(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self._frame = None
        self.switch_frame(StartPage)

    def switch_frame(self,frame_class):
        new_frame = frame_class(self)
        if self._frame is not None:
            self._frame.destroy()
        self._frame = new_frame
        self._frame.pack()

class StartPage(tk.Frame):
    def __init__(self,master):
        tk.Frame.__init__(self,master)
        chbtn = tk.Button(self,text='Tmp page',command=lambda:master.switch_frame(tmp.page))
        chbtn.grid(column=0,row=0)


a = MainStr()
a.mainloop()

在tmp.py

import tkinter as tk
import main

class page(tk.Frame):
    def __init__(self,master):
        tk.Frame.__init__(self,master)
        chbtn = tk.Button(self,text='Home page',command=lambda:master.switch_frame(main.StartPage))
        chbtn.grid(column=0,row=0)

非常感谢

1 个答案:

答案 0 :(得分:2)

我将创建一个名为startpage.py的新文件,并将您的StartPage类放入其中。然后,您可以从main.py和tmp.py导入startpage.py。完成此操作后,可以从tmp.py中删除import main语句。