QPushButton的子类化

2024-04-25 09:12:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在寻找一种将QPushButton子类化的方法,以便在构建新按钮时连接“clicked”信号,例如:

Btn = CustomButtonClass('Text', clicked='lambda: self.func(par)')

到目前为止-没有任何成功。在

我想问题是将正确的参数传递给CustomButtonClass的init(),但不知道是什么,为什么。在

我所拥有的:

^{pr2}$

我还注意到:

Btn.clicked.connect(lambda: self.func(par))

也没用。在

我是否必须重写QPushButton的mouseReleaseEvent或构造自定义信号才能完成我的任务?在


Tags: 方法lambdatextself信号initconnect按钮
1条回答
网友
1楼 · 发布于 2024-04-25 09:12:37

您不需要创建子类,因为PyQt和PySide都已经有了这个特性(请参见PyQt文档中的Connecting Signals Using Keyword Arguments)。在

演示:

>>> from PyQt4 import QtGui
>>> app = QtGui.QApplication([])
>>> btn = QtGui.QPushButton('Test', clicked=lambda: print('Hello World!'))
>>> btn.click()
Hello World!

如果仍然需要子类化,那么当然可以简单地执行以下操作:

^{pr2}$

相关问题 更多 >