我一直在寻找一种子类化QPushButton的方法,所以我可以在构建新按钮时连接'clicked'信号,例如:
Btn = CustomButtonClass('Text', clicked='lambda: self.func(par)')
到目前为止 - 没有任何成功。
我想问题是将正确的参数传递给CustomButtonClass的 init (),但不知道是什么,为什么。
我得到了什么:
class CustomButtonClass(QtGui.QPushButton):
def __init__(self, text, parent=None):
super().__init__()
我也注意到了:
Btn.clicked.connect(lambda: self.func(par))
也行不通。
我是否必须覆盖QPushButton的mouseReleaseEvent或构建自定义信号才能完成我的任务?
答案 0 :(得分:1)
您不需要创建子类,因为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!
如果您仍需要子类,那么您当然可以这样做:
class CustomButtonClass(QtGui.QPushButton):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)