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 制作子类小部件的主要内容,如果未能解决你的问题,请参考以下文章
将 MouseDoubleClickEvent 添加到 PyQt5 中的 for 循环中制作的小部件 [重复]