首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python/PySide ImportError

Python/PySide ImportError
EN

Stack Overflow用户
提问于 2014-10-28 10:28:24
回答 1查看 307关注 0票数 0

因此,我最近开始学习python和工具箱PySide,但是我遇到了一个问题,我找不到解决方案,下面是错误代码:

代码语言:javascript
复制
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:

代码语言:javascript
复制
from ui.window import Window

wind = Window()
wind.Create()

window.py:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-28 19:06:53

如果你仔细看回溯,你会发现:

  1. main.py imports ui.window

然后:

  1. window.py imports ui.menubar

然后:

  1. menubar.py imports ui.window

现在我们进入了一个无限的导入循环,window导入menubar导入window导入menubar .等等,当然,python通过引发错误来防止这种情况发生。

但是,应用程序的结构还存在其他问题。特别是,Menubar.Create方法创建了一个新的Window实例,向它添加了一些菜单项,然后立即抛出结果。相反,您应该将Window的现有实例作为参数传递给Menubar.Create,如下所示:

代码语言:javascript
复制
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中这样做:

代码语言:javascript
复制
    self.win = QMainWindow()
    ...
    mB = MenuBar()
    mB.Create(self.win)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26605968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档