在我开始之前似乎已经失败了 - 我无法让Qt设计师生成的GUI在Python 3中启动。
我的设置:
浏览了大量的教程(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,但用几个命令手动创建它)工作正常。
感谢您的帮助!
答案 0 :(得分:1)
使用Qt Designer时,使用模板(MainWindow,Dialog,Widget),实现逻辑时应使用相同的小部件。在您的情况下,您使用了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_())