Подклассы 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)
Другие вопросы по тегам