我在使用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_()) # 在主线程中退出