Python:导入错误。从其他类访问方法

时间:2013-12-17 14:19:53

标签: python oop tkinter

我遇到了以下问题:在我的主要tk窗口中,我有一个按钮,可以打开一个新的Toplevel窗口。单击Toplevel窗口上的按钮后,应添加列表框的新元素。

我不断收到此错误消息:

Traceback (most recent call last):
  File "MainWindow.py", line 4, in <module>
    from TopWindow import TopWindow
  File "TopWindow.py", line 4, in <module>
    import MainWindow
  File "MainWindow.py", line 4, in <module>
    from TopWindow import TopWindow
ImportError: cannot import name TopWindow

我认为问题是这两个类互相导入。但是我不确定如何解决这个问题。有什么想法吗?

Mainwindow.py:

from TopWindow import TopWindow

class MainWindow:
    def __init__(self, mainWindow):
        self.value = ''
        self.gui(mainWindow)
    def gui(self, mainWindow):
        top = TopWindow()
        button = tk.Button(optionFrame, text="Open TopWindow", command=top.import)
        ...

    def addtolistbox(self):
        ....


mainWindow = tk.Tk()
run = MainWindow(mainWindow)
mainWindow.mainloop()

TopWindow.py

import MainWindow
class TopWindow:
    def import(self):
        ....
        MainWindow.MainWindow().addtolistbox()

1 个答案:

答案 0 :(得分:1)

您创建了循环导入;从MainWindow导入TopWindow时,TopWindow类尚未定义,因此TopWindow看到的MainWindow模块没有该属性。< / p>

推迟TopWindow班级的导入:

class TopWindow:
    def import(self):
        ....
        import MainWindow
        MainWindow.MainWindow().addtolistbox()

接下来,您每次都要创建MainWindow对象的新副本;您可能想要访问MainWindow.run中创建的单例对象:

class TopWindow:
    def import(self):
        ....
        import MainWindow
        MainWindow.run.addtolistbox()