我在 PyQt 的菜单上有一个 Action 列表,每个 Action 对应我要显示的每个不同提要。所以我有一个 Y 将事件提要设置为 Y,Z 将其设置为 Z,等等(对于网络漫画阅读程序)。
我的菜单上都有,我觉得自动化的方法可能更好;而不是每次都打字。类似于将其添加到字典中的函数,然后将其与每个插槽的信号连接起来。
但是,我希望那个插槽函数(假设它称为 Foo)采用一个参数来决定单击了什么。因此,如果单击 X,则 X、Y 传递 Y,等等。
环顾四周,有一个 SO 问题说要使用 lambda,它看起来……不知何故不对。
另一种方法是使用 QSignalMapper。我试图寻找它,但找不到如何使用它的示例。
有人能帮忙吗?
谢谢!
最佳答案
您可以使用 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))
上面的例子很基础,如果你有更多问题,我可以详细说明。
关于python - PyQt 和 QSignalMapper/lambdas - 多信号,单槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3893876/