'Can I have a Signal list in PySide6?
I have a customized QLabel that can be clicked:
class ClickedLabel(QLabel):
l_clicked = Signal()
r_clicked = Signal()
m_clicked = Signal()
def __init__(self):
super().__init__()
self.style_sheet = 'QLabel {background-color: pink}'
self.alignment = Qt.AlignCenter
def mouse_press_event(self, ev: QMouseEvent) -> None:
if ev.button() == Qt.RightButton:
self.r_clicked.emit()
elif ev.button() == Qt.LeftButton:
self.l_clicked.emit()
elif ev.button() == Qt.MiddleButton:
self.m_clicked.emit()
def set_buttons_functions(self, *funcs):
signals = [self.l_clicked, self.r_clicked, self.m_clicked]
for func, signal in zip(funcs, signals):
signal.connect(func)
It works fine.
Now I want to make three Singnal()s a list, so the code counld be like this:
class ClickedLabel(QLabel):
signals = [Signal()] * 3
def __init__(self):
super().__init__()
self.style_sheet = 'QLabel {background-color: pink}'
self.alignment = Qt.AlignCenter
def mouse_press_event(self, ev: QMouseEvent) -> None:
buttons = [Qt.LeftButton, Qt.RightButton, Qt.MiddleButton]
self.signals[buttons.index(ev.button())].emit()
def set_buttons_functions(self, *funcs):
for func, signal in zip(funcs, self.signals):
signal.connect(func)
Then I got an error:
AttributeError: 'PySide6.QtCore.Signal' object has no attribute 'connect'
How could I fix it?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
