Подклассы QPushButton
Я искал способ создания подкласса QPushButton, чтобы я мог подключить сигнал "нажал" при создании новой кнопки, например:
Btn = CustomButtonClass('Text', clicked='lambda: self.func(par)')
Пока что - безуспешно.
Я предполагаю, что дело в том, чтобы передать правильные параметры в init() CustomButtonClass, но понятия не имею, что и почему.
Что у меня есть:
class CustomButtonClass(QtGui.QPushButton):
def __init__(self, text, parent=None):
super().__init__()
Я также заметил, что:
Btn.clicked.connect(lambda: self.func(par))
Также не работает.
Должен ли я переопределить mouseReleaseEvent QPushButton или создать собственный сигнал, чтобы выполнить мою задачу?
1 ответ
Вам не нужно создавать подкласс, потому что и PyQt, и PySide уже имеют эту функцию (см. Подключение сигналов с помощью аргументов ключевых слов в документации PyQt).
Демо-версия:
>>> 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)