Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在多个文件中导入类_Python_Class_Tkinter - Fatal编程技术网

Python 在多个文件中导入类

Python 在多个文件中导入类,python,class,tkinter,Python,Class,Tkinter,我在谷歌上找不到解决方案。。。 所以我正在用python编程一个GUI,其中有两个窗口:一个主窗口和一个临时窗口,允许进行一些更改。主窗口位于main.py中,另一个位于tmp.py中。 在临时窗口中,我需要一个按钮,该按钮允许我返回主窗口。。这意味着我必须从tmp.py调用main.py中的窗口。 因此,在main.py中,我有: 导入tmp 我认为tmp.py推杆不正确: 进口干管 因为它会重新定义同一个类。。。那么你认为正确的程序应该是什么呢。。。我希望我说得够清楚,这不是那么容易描述的。

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

我认为tmp.py推杆不正确: 进口干管 因为它会重新定义同一个类。。。那么你认为正确的程序应该是什么呢。。。我希望我说得够清楚,这不是那么容易描述的。。。这可能就是我无法在谷歌上找到解决方案的原因

因此,基本上代码应该是: 在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)

非常感谢

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

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

您可以更改项目结构,使所有内容都包含在
main.py
中,除此之外,还需要更多的建议来查看您的代码的外观和结构。对不起,您是对的。。。我试图简化代码,希望现在更清晰。。。如果您有大型项目,那么将所有内容都放在一个文件中太麻烦了。谢谢您发布代码,我现在有一个答案,发布在下面。您可以更改项目结构,使所有内容都包含在
main.py
,以及其他内容中,但是更多的建议需要你去看看你的代码是什么样子,它的结构是怎样的。。。我试图简化代码,希望现在更清晰。。。如果你有大型项目,把所有东西都放在一个文件里太麻烦了。谢谢你发布代码,我现在有一个答案给你,发布在下面