Qtwidget的问题
问题描述
我只是在学习如何使用Qtdesigner和PyCharm创建GUI。所以我构建了一个非常简单的GUI,它有两个底部和一个标签。在pycharm中编译.ui文件并编写以下代码来执行它之后:
from PySide2 import QtWidgets
from Algo_UI import untitled
class QtApp ( untitled.Ui_MainWindow, QtWidgets.QMainWindow):
def __init__(self):
super(QtApp, self).__init__()
self.setupUi(self)
if __name__ == '__main__':
app = QtWidgets.QApplication()
qt_app = QtApp()
qt_app.show()
app.exec_()
我收到此错误:
Traceback (most recent call last):
File "/home/al/0-Projects/Python/Algo/AlgoApp/Main.py", line 11, in <module>
qt_app = QtApp()
File "/home/al/0-Projects/Python/Algo/AlgoApp/Main.py", line 7, in __init__
self.setupUi(self)
File "/home/al/0-Projects/Python/Algo/AlgoApp/Algo_UI/untitled.py", line 17, in setupUi
self.centralwidget = QtWidgets.QWidget(MainWindow)
TypeError: QWidget(parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] =
Qt.WindowFlags()): argument 1 has unexpected type 'QtApp'
这里是Untitled.py文件的第一部分,其中错误消息上的第-17行是指。
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
如何解决此问题?
解决方案
错误是因为您不应该将PyQt5和PySide2组合在一起,因为它们可能导致难以调试的错误。虽然这两个类都使用Qt,但它们创建了不同的包装器,因此PyQt5对象不能由PySide2对象使用,反之亦然。解决方案只是使用库,在本例中将from PySide2 import QtWidgets
更改为from PyQt5 import QtWidgets
。同时将app = QtWidgets.QApplication()
更改为app = QtWidgets.QApplication([])
。
相关文章