激活组合框时发送几个参数

时间:2017-11-15 21:26:55

标签: python python-3.x pyqt pyqt4

{{1}}

当选择一个组合框时,只有组合框的值被传递给on_combo_activated函数。

如果我想发送另外两个变量,我该怎么办?

1 个答案:

答案 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'))

最后一种方法可能比其他方法更受欢迎,因为它是自我记录的,因此可能更具可读性。