Qtwidget的问题

2022-02-23 00:00:00 python pyqt5 pyside2 qt-designer

问题描述

我只是在学习如何使用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([])

相关文章