关于pyqt5的问题

我在使用PyQt5时出现报错:

Traceback (most recent call last):
  File "xxx.py", line 9, in 
    win=server_control()
        ^^^^^^^^^^^^^^^^
  File "xxx.py", line 7, in __init__
    self.setupUi(self)
  File "xxx.py", line 17, in setupUi
    self.centralwidget = QtWidgets.QWidget(parent=LoginWindow)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: QWidget(parent: typing.Optional[QWidget] = None, flags: Qt.WindowType = Qt.WindowFlags()): argument 'parent' has unexpected type 'server_control'

代码如下:

class server_control(xxx,QMainWindow):
    def __init__(self,parent=None) -> None:
        super(server_control, self).__init__(parent)
        self.setupUi(self)
app=QApplication(sys.argv)
win=server_control()
win.show()
sys.exit(app.exec_())

我在检查两个文件有无问题时发现了如下问题:


#文件1.py
from PyQt5.QtWidgets import QMainWindow,QApplication
#文件2.py
from PyQt6 import QtCore, QtGui, QtWidgets

我使用了pyuic6来进行ui与py文件的转换,但在文件1.py中使用了错误的PyQt,运行自然会发生问题。

方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”

该错误是因为在构造函数中传递的父对象类型有误,应该将父对象类型指定为 QMainWindow。

应该修改如下:

class server_control(xxx,QMainWindow):
def init(self, parent=None):
super(server_control, self).init(parent)
self.setupUi(self)

app = QApplication(sys.argv)
win = server_control()
win.show()
sys.exit(app.exec_())

xxx 是什么鬼?

from PyQt5.QtWidgets import QApplication,QMainWindow
import sys

class server_control(QMainWindow):
    def __init__(self, parent=None):
        super(server_control, self).__init__(parent)
        self.resize(400,300)

if __name__ == '__main__':
    app = QApplication(sys.argv)  # 初始化界面
    win = server_control()  # 生成一个主窗口
    win.show()  # 显示主窗口
    sys.exit(app.exec_())  # 在主线程中退出