我遇到了以下问题:在我的主要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()
答案 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()