PyQt5 制作子类小部件

Posted

技术标签:

【中文标题】PyQt5 制作子类小部件【英文标题】:PyQt5 Making a subclass widgets 【发布时间】:2018-03-12 19:58:25 【问题描述】:

所以我想知道如何创建一个小部件的子类 例如,如果我想创建一个从 QtWidgets.QPushButton 继承的方法和属性的小部件,但是我会在此之上创建额外的方法和属性。

class Coord(QtWidgets.QPushButton):
    def __init__(self):
        super(Coord, self).__init__()
        self.coordinates = []
        #basically adding attributes to the object "QPushButton"

    def set_text(self,text):
        self.setText(text)
        chrcount = 100 / len(text)
        self.setStyleSheet("font-size: ".format(chrcount))
        #This will set the text of the button, yet will resize it appropriatly

这是一个例子。但是,它将“按钮”小部件创建为新窗口。我想知道如何让它像 QPushButton 一样工作,只是加上我想添加的额外功能

编辑:固定- 从

替换了我的“超级”功能
def __init__(self):
    super(Coord, self).__init__()

def __init__(self,parent):
    super(Coord, self).__init__(parent)

真的不知道这是怎么解决的,但是嘿嘿!

【问题讨论】:

我正准备回答你的问题。 Qt 中的对象需要父对象。我建议查看 QObject 的文档,也可能还有 Layout API 概述。 我知道我错过了一些东西,因为 QtWidgets.QPushButtin(self) 和 Coord() 缺乏“自我”之间的区别 @TomBell 您的问题对于其他人来说是无法解决的,因为您没有显示生成该问题的上下文,因此它属于题外话“为什么此代码不起作用?”,仅您能够解决它,因为您拥有重现错误所需的代码,我们没有。我建议对于下一个问题阅读How to Ask,并在必要时提供minimal reproducible example PyQt: give parent when creating a widget?的可能重复 【参考方案1】:

您可以使用 qt 设计器创建一个按钮并在那里设置按钮的所有可能功能。如果这还不够,您可以调整编码中的按钮,例如 self.button.whatever.set ....如果这还不够,请将按钮附加到 qt 设计器中的类,创建一个模块和一个类并进行调整你想要的。

【讨论】:

以上是关于PyQt5 制作子类小部件的主要内容,如果未能解决你的问题,请参考以下文章

如何在pyqt5中为一个小部件制作一个清晰的板子功能

将 MouseDoubleClickEvent 添加到 PyQt5 中的 for 循环中制作的小部件 [重复]

在pyqt5中单击登录按钮时获取小部件未定义错误

无法在 Qt 设计器(macos)中显示自定义 PyQt5 小部件插件

在 PyQt5 中,右小部件比其他小部件短

PyQt5 - 无法在子类中捕获 mousePressEvent