似乎我什至没有开始就失败了-我无法让Qt Designer生成的GUI在Python 3中启动。

我的设置:


Windows 10 x64上的Anaconda,安装了Python 3,PyQt 5,jupyter笔记本
我在Qt Designer中创建了一个简单的GUI(字面意思:只有一个文本标签),名为“ blob.py”,然后使用以下命令进行了转换:“ pyuic5 -o blob.py blob.ui”


浏览了无数的教程(99%专门用于Qt4而不与Qt5兼容)之后,我发现以下代码应该是简单Qt GUI的“ hello world”实现:

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from blob import Ui_MainWindow

class AppWindow(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.show()

app = QApplication(sys.argv)
w = AppWindow()
w.show()
sys.exit(app.exec_())


但是,当我尝试在Jupyter Notebook中执行它时,出现以下错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-1-804f20d6b17d> in <module>()
     12
     13 app = QApplication(sys.argv)
---> 14 w = AppWindow()
     15 w.show()
     16 sys.exit(app.exec_())

<ipython-input-1-804f20d6b17d> in __init__(self)
      8         super().__init__()
      9         self.ui = Ui_MainWindow()
---> 10         self.ui.setupUi(self)
     11         self.show()
     12

C:\Users\Dante\blob.py in setupUi(self, MainWindow)
     18         self.label.setGeometry(QtCore.QRect(50, 20, 131, 16))
     19         self.label.setObjectName("label")
---> 20         MainWindow.setCentralWidget(self.centralwidget)
     21         self.menubar = QtWidgets.QMenuBar(MainWindow)
     22         self.menubar.setGeometry(QtCore.QRect(0, 0, 545, 26))

AttributeError: 'AppWindow' object has no attribute 'setCentralWidget'


我没有手动触摸blob.py。

有谁碰巧知道为什么Qt Designer生成的代码有错误?
我有什么想念的吗?

注意:启动简单的PyQt代码(即不导入GUI,而是使用一些命令手动创建)即可正常运行。

感谢您的热心帮助!

最佳答案

使用Qt Designer时,将使用模板(MainWindow,Dialog,小部件),并且在实现逻辑时应使用相同的小部件。在您的情况下,您已使用MainWindow,因此应使用QMainWindow而不是QDialog。以下代码是解决方案:

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from blob import Ui_MainWindow

class AppWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.show()

app = QApplication(sys.argv)
w = AppWindow()
w.show()
sys.exit(app.exec_())

关于python - PyQt 5-显示Py Designer GUI的简单代码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45067865/

10-11 17:03