Я пытаюсь создать простую связь между сигналом и слотом, но обнаружил, что застрял, пытаясь вызвать дополнительную функцию. Есть два варианта, к которым я пришел. Вот код, который вызывает мой класс.PyQt5 log a
(Вариант 1):
self.flip = MyClass("Flip Image")
self.flip.clicked.connect(self.do_flip)
QWidget
затем экземпляр моего класса, чья главная цель состоит в том, чтобы войти сигнал сделал. Это, как я считаю, должен быть реализован мой класс: не
class MyClass(QPushButton):
def __init__(self, name: str) -> None:
super().__init__(name)
self._name = name
def mousePressEvent(self, *args, **kwargs):
self.log_info()
def log_info(self):
log(self._name)
Что я не понимаю, почему слот do_flip
не вызывается? Это не имеет никакого смысла для меня, так что я вместо этого попытался перекрывая щелкнул сигнал через
(Вариант 2):
class MyClass(QPushButton):
def __init__(self, name: str) -> None:
super().__init__(name)
self._name = name
def clicked(self, *args, **kwargs):
self.log_info()
#add connect() here?
def log_info(self):
log(self._name)
Но с этим кодом я дружественную AttributeError: 'function' object has no attribute 'connect'
. Я не могу найти документацию по методу clicked
и как он вызывает соединение. Есть ли способ для меня сделать соединение для щелчка по слоту или мне нужно создать собственный сигнал? Я считаю, что это станет очень полезным при попытке переопределить другие сигналы, которые также испускают определенные значения.
Если так это приводит меня к:
Last Resort - Мой собственный сигнал
Класс будет называться так:
self.flip = MyClass("Flip Image")
self.flip.mysig.connect(self.do_flip)
И реализован так:
И это работает. Но я не уверен, что моя реализация имеет смысл. Он чувствует себя взломанным. Я бы предпочел не использовать этот последний вариант курорта, и я надеюсь, что есть более чистый вариант.
В варианте 2, есть ли способ, чтобы переопределить 'clicked' pyqtSignal задается' QAbstractButton' добавить вызов в журнал? – Max
'clicked' не является функцией, но это pyqtSignal. Как я объяснил в сообщении, это определенно не путь. –
Предполагая, что я немного упростил, я бы предпочел не подключать несколько слотов от одного сигнала так, как вы показали мне. – Max