Я не понимаю, почему иногда подключение к сигналам не работает напрямую с помощью метода объекта. Он начинает работать, когда я даю лямбду с помощью этого метода.
class MainWindowTrans:
def __init__(self, window: QMainWindow):
self.window = window
self.asset: QComboBox = self.window.findChild(QComboBox, 'asset')
self.asset.currentIndexChanged.connect(self.onOne)
self.asset.currentIndexChanged.connect(self.onTwo)
self.asset.currentIndexChanged.connect(onThree)
# self.asset.currentIndexChanged.connect(lambda : self.onOne())
self.asset.dumpObjectInfo()
def onOne(self):
print('on1')
@staticmethod
def onTwo():
print('on2')
def onThree():
print('on3')
Вывод:
OBJECT QComboBox::asset
SIGNALS OUT
signal: currentIndexChanged(int)
--> __GlobalReceiver__::unnamed onOne7f72b8ecab507f72e1dc0050()
--> __GlobalReceiver__::unnamed onTwo7f72e1dc05f0()
--> __GlobalReceiver__::unnamed onThree7f72e1f273b0()
on2
on3
Если я преобразую первое соединение с лямбда-выражением, или просто закомментирую последнее Линия когда-либо работает нормально:
OBJECT QComboBox::asset
SIGNALS OUT
signal: currentIndexChanged(int)
--> __GlobalReceiver__::unnamed onOne7fb8481a2a507fb8538140e0()
--> __GlobalReceiver__::unnamed onTwo7fb853814680()
--> __GlobalReceiver__::unnamed onThree7fb85397d3b0()
--> __GlobalReceiver__::unnamed <lambda>7fb848140c20()
Output:
on1
on2
on3
on1