【发布时间】:2018-02-28 05:26:16
【问题描述】:
我在 PyQt 中使用 for loop 连接多个信号/插槽。代码如下:
# Connect Scan Callbacks
for button in ['phase', 'etalon', 'mirror', 'gain']:
getattr(self.ui, '{}_scan_button' .format(button)).clicked.connect(
lambda: self.scan_callback(button))
我的期望:
- 将按钮
phase_scan_button单击signal到scan_callbackslot并将字符串phase作为参数发送到slot。etalon、mirror和gain也是如此。
我得到了什么:
- 出于某种原因,我的函数总是将字符串
gain作为所有按钮的参数传递。不知道我是在愚蠢(可能)还是这是一个错误。
供参考,slot 方法:
def scan_callback(self, scan):
print(scan) # Here I always get 'gain'
if self.scanner.isWorking:
self.scanner.isWorking = False
self.scan_thread.terminate()
self.scan_thread.wait()
else:
self.scanner.isWorking = True
self.scan_thread.start()
getattr(self.ui, '{}_scan_button' .format(
scan)).setText('Stop Scan')
getattr(self, '_signal{}Scan' .format(scan)).emit()
【问题讨论】:
标签: python qt pyqt signals-slots