我使用Qt Designer创建了一个自定义窗口小部件(然后使用pyuic5创建了py文件),但是我无法在代码中使用它。我对此进行了很多搜索,发现应该使用类似这样的东西:
import MyWidget
self.MyWidget = MyWidget.Ui_Form()
self.MyWidget.setupUi(self)
当我尝试使用以下方法将其添加到网格中时:
grid.addWidget(self.MyWidget, 4 ,2)
我收到以下错误代码:
TypeError:参数与任何重载调用都不匹配:
addWidget(self,QWidget):参数1具有意外的类型'Ui_Form'
addWidget(self,QWidget,int,int,alignment:Union [Qt.Alignment, Qt.AlignmentFlag] = 0):参数1具有意外的类型'Ui_Form'
addWidget(self,QWidget,int,int,int,int,对齐方式: Union [Qt.Alignment,Qt.AlignmentFlag] = 0):参数1意外 输入“ Ui_Form”
该错误是有道理的,我有点理解它的来历,但我不知道如何解决它以及如何使用我的窗口小部件。
Code of my widget generated with pyuic5:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(400, 300)
self.lcdNumber = QtWidgets.QLCDNumber(Form)
self.lcdNumber.setGeometry(QtCore.QRect(120, 70, 64, 23))
self.lcdNumber.setObjectName("lcdNumber")
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(120, 40, 71, 16))
self.label.setObjectName("label")
self.horizontalSlider = QtWidgets.QSlider(Form)
self.horizontalSlider.setGeometry(QtCore.QRect(90, 90, 160, 29))
self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
self.horizontalSlider.setObjectName("horizontalSlider")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.label.setText(_translate("Form", "Frecuencia"))
顺便说一句,window类和所有其他东西都可以正常工作。我刚刚发布了需要帮助的代码。我在 init 方法中使用了MyWidget.Ui_Form()。
答案 0 :(得分:0)
Ui_Form
不是窗口小部件,它是用于填充窗口小部件的类,因此简单的解决方案如下:
import MyWidget
...
form = MyWidget.Ui_Form()
w = QtWidgets.QWidget()
form.setupUi(w)
grid.addWidget(w, 4 ,2)
...
但是documentation建议创建一个从适当的小部件继承并填充的类:
import MyWidget
class SomeWidget(QtWidgets.QWidget, MyWidget.Ui_Form):
def __init__(self, parent=None):
super(SomeWidget, self).__init__(parent)
self.setupUi(self)
...
w = SomeWidget()
grid.addWidget(w, 4 ,2)