{{1}}
当选择一个组合框时,只有组合框的值被传递给on_combo_activated函数。
如果我想发送另外两个变量,我该怎么办?
答案 0 :(得分:1)
解决此问题的一种方法是使用lambda
函数:
self.comboBox.activated[str].connect(
lambda text: self.on_combo_activated(text, 'str1', 'str2'))
...
def on_combo_activated(self, text, arg1, arg2):
print(text, arg1, arg2)
functools.partial函数做了类似的事情,但有时候将它与位置参数一起使用会很尴尬。如果你用它来连接上面的插槽:
self.comboBox.activated[str].connect(
partial(self.on_combo_activated, 'str1', 'str1')
插槽实际上会打印str1 str2 text
,因为额外的位置参数总是追加,而不是插入。但是,使用关键字参数,它将按预期工作:
self.comboBox.activated[str].connect(
partial(self.on_combo_activated, arg1='str1', arg2='str1'))
最后一种方法可能比其他方法更受欢迎,因为它是自我记录的,因此可能更具可读性。