PyQt和QSignalMapper / lambdas - 多个信号,单个插槽

时间:2010-10-08 19:55:31

标签: python qt pyqt signals signals-slots

我在PyQt的菜单上有一个操作列表,每个菜单都有一个我要显示的不同Feed。所以我有一个Y,它将活动进给设置为Y,Z将其设置为Z等等。(对于webcomic阅读程序)。

我在菜单上都有,并认为自动化方法可能会更好;而不是每次打字。类似于将其添加到字典中的函数,然后将其与每个插槽的信号连接到单个插槽。

但是,我想要这个插槽功能,比如它叫做Foo,用一个参数来决定点击了什么。因此,如果单击X,则X,Y通过Y等

环顾四周,一个问题说使用了一个lambda,看起来并不正确......不知怎的。

另一种方式是使用QSignalMapper。我试着寻找这个,但找不到如何使用它的例子。

有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:5)

您可以使用functools.partial(链接to the documentation):

import functools
...

# note that these are the 'new style' slot connections (not necessarily needed)
self.menu_entry_x.triggered.connect(functools.partial(myfunc, x))
self.menu_entry_y.triggered.connect(functools.partial(myfunc, y))

上面的例子非常基础,但如果你有更多问题,我可以详细说明。