如何将自定义小部件 (PyQT) 导入 Python 代码

米格尔·杜兰·迪亚兹

我用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从PyQt5中的.ui文件导入自定义窗口小部件

无法从自定义包导入共享的python代码

如何编写Python代码pyqt5在主窗口上附加2个小部件

将资源文件导入PyQt代码?

如何从Transmissionrpc插件导入python代码?

如何将自定义css代码添加到由python Bokeh save()生成的独立HTML文件中?

如何将自定义 css 导入 reactjs 项目

如何将自定义文件导入APK

如何自定义python导入?

如何将自定义代码与Drupal合并

如何将模块“重新导入”到python,然后在导入后更改代码

将python代码导入Unity

Python 2.7无法导入PyQt4

导入`site`模块之前如何运行Python代码?

如何防止模块代码从python中导入的模块执行?

如何处理导入的python包代码中引发的错误?

Python:如何导入.csv并通过代码运行内容?

如何使用文件导入python请求以输出状态代码

将网格导入Fipy后如何从python访问gmsh代码?

在PyQT5中创建自定义小部件

PyQt 自定义小部件不可见

在pyqt5中创建自定义小部件

导入iPython自定义小部件功能(文件结构?)

Django如何将python导入错误重定向到自定义错误页面

PySide2-如何使用导入中的自定义小部件?

开发人员将自定义 Python 库放在哪里进行导入

如何在不导入自定义小部件类包的情况下使用自定义小部件和uic.loadUi?

从源代码安装PyQt5:无法导入PyQt5.sip

GIMP 2.10 Python-如何导入自定义模块?