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

The*_*uck 1 python qt signals pyqt signals-slots

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

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

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

环顾四周,一个SO问题说要使用lambda,看起来并不正确......不知何故.

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

有人可以帮忙吗?

谢谢!

Chr*_*heD 5

您可以使用functools.partial(链接到文档):

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))
Run Code Online (Sandbox Code Playgroud)

以上示例非常基础,但如果您有更多问题,我可以详细说明.