我在PyQt的菜单上有一个操作列表,每个菜单都有一个我要显示的不同Feed。所以我有一个Y,它将活动进给设置为Y,Z将其设置为Z等等。(对于webcomic阅读程序)。
我在菜单上都有,并认为自动化方法可能会更好;而不是每次打字。类似于将其添加到字典中的函数,然后将其与每个插槽的信号连接到单个插槽。
但是,我想要这个插槽功能,比如它叫做Foo,用一个参数来决定点击了什么。因此,如果单击X,则X,Y通过Y等
环顾四周,一个问题说使用了一个lambda,看起来并不正确......不知怎的。
另一种方式是使用QSignalMapper。我试着寻找这个,但找不到如何使用它的例子。
有人可以帮忙吗?
谢谢!
答案 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))
上面的例子非常基础,但如果你有更多问题,我可以详细说明。