我用 Qt Designer 创建了一个自定义小部件(然后用 pyuic5 创建了 py 文件),但我无法在我的代码中使用它。我搜索了很多关于这个,我发现我应该使用这样的东西:
import MyWidget
self.MyWidget = MyWidget.Ui_Form()
self.MyWidget.setupUi(self)
当我尝试使用以下方法将其添加到我的网格时:
grid.addWidget(self.MyWidget, 4 ,2)
我收到以下错误代码:
类型错误:参数不匹配任何重载调用:
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, alignment: 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"))
顺便说一句,窗口类和所有其他东西都可以正常工作。我刚刚发布了我需要帮助的一段代码。我在init方法中使用了 MyWidget.Ui_Form() 。
Ui_Form
不是小部件,它是一个用于填充小部件的类,因此简单的解决方案如下:
import MyWidget
...
form = MyWidget.Ui_Form()
w = QtWidgets.QWidget()
form.setupUi(w)
grid.addWidget(w, 4 ,2)
...
但是文档建议创建一个从适当的小部件继承的类并填充它:
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句