0
我有一些麻煩將其連接到一個GUI Qt的信號時使用functools.partial()
將參數傳遞給一個函數(log_this()是一個僞函數只是傳達問題):PyQt的連接到functools.partail傳遞信號值
self.ui.comboBox_1.currentIndexChanged.connect(functools.partial(self.log_this, val='aaaaaa'))
def log_this(self, val='0000'):
log.info(val)
得到錯誤:
TypeError: log_this() got multiple values for argument 'val'
如果我用lambda來調用函數正常工作:
self.ui.comboBox_1.currentIndexChanged.connect(lambda: self.log_this(val='aaaaaa'))
看着這個,我看到log_this()
正在獲取當前的comboBox索引。我也嘗試使用位置參數,並且也得到了上面的錯誤。
我想了解使用functools.partial()是否正確,或者我應該堅持使用lambda表示這種情況。如果正確,那麼正確的做法是什麼?
中添加更多細節:
我的課:
class AppMainWindow(QtGui.QMainWindow):
message = QtCore.Signal(str)
def __init__(self, parent=None):
super().__init__(parent=parent)
self.manual_test = True
self.all_tests_enabled = False
self.set_connections()
def set_connections(self):
self.ui.comboBox_1.currentIndexChanged.connect(
functools.partial(self.log_this, val='aaaaaa'))
self.ui.pushButton_1.clicked.connect(self.add_item)
def log_this(self, val='0000'):
log.info(val)
我使用PySide 1.2.2。
在此先感謝!
是你的'log_this'實際上是一個類的方法?如果沒有,爲什麼它有一個「自我」?如果是這樣,你能展示一個更完整的例子嗎? –
是的,它是我的主窗口類的一部分。我已經添加了一個類的例子 –