因此,我最近开始学习python和工具箱PySide,但是我遇到了一个问题,我找不到解决方案,下面是错误代码:
Traceback (most recent call last):
File "C:\Users\Callum\workspace\Application\main.py", line 1, in <module>
from ui.window import Window
File "C:\Users\Callum\workspace\Application\ui\window.py", line 4, in <module>
from ui.menubar import MenuBar
File "C:\Users\Callum\workspace\Application\ui\menubar.py", line 3, in <module>
from ui.window import Window
ImportError: cannot import name 'Window'这是密码:
main.py:
from ui.window import Window
wind = Window()
wind.Create()window.py:
import sys
from PySide.QtCore import *
from PySide.QtGui import *
from ui.menubar import MenuBar
class Window:
title = "Callum"
minWidth = 980
minHeight = 640
app = None
win = None
def Create(self):
self.app = QApplication(sys.argv)
self.win = QMainWindow()
self.win.setWindowTitle(self.title)
self.win.setMinimumSize(self.minWidth, self.minHeight)
mB = MenuBar()
mB.Create()
self.win.show()
sys.exit(self.app.exec_())menubar.py:
from PySide.QtCore import *
from PySide.QtGui import *
from ui.window import Window
class MenuBar:
def Create(self):
wind = Window()
menu = wind.menuBar()
fileMenu = menu.addMenu("File")
fileMenu.addAction("Exit", exit)发布于 2014-10-28 19:06:53
如果你仔细看回溯,你会发现:
ui.window然后:
ui.menubar然后:
ui.window现在我们进入了一个无限的导入循环,window导入menubar导入window导入menubar .等等,当然,python通过引发错误来防止这种情况发生。
但是,应用程序的结构还存在其他问题。特别是,Menubar.Create方法创建了一个新的Window实例,向它添加了一些菜单项,然后立即抛出结果。相反,您应该将Window的现有实例作为参数传递给Menubar.Create,如下所示:
from PySide.QtCore import *
from PySide.QtGui import *
# remove the follwing import, which is not needed
# from ui.window import Window
class MenuBar:
def Create(self, wind):
# don't create a new instance
# wind = Window()
menu = wind.menuBar()
fileMenu = menu.addMenu("File")
fileMenu.addAction("Exit", exit)然后在window.py中这样做:
self.win = QMainWindow()
...
mB = MenuBar()
mB.Create(self.win)https://stackoverflow.com/questions/26605968
复制相似问题