我在 PyQt 的菜单上有一个操作列表,每个操作对应我想要显示的每个不同的提要。所以我有一个 Y 将活动源设置为 Y,Z 将其设置为 Z,等等(对于网络漫画阅读程序)。
我的菜单上都有,并且觉得自动化方法可能更好;而不是每次都打字。类似于将其添加到字典中的函数,然后将其与每个插槽的信号连接起来。
但是,我希望该槽函数(假设它称为 Foo)采用一个参数来决定单击的内容。因此,如果单击 X,则 X、Y 会传递 Y,依此类推。
环顾四周,有一个问题说要使用 lambda,但不知怎的,它看起来……不太正确。
另一种方法是使用 QSignalMapper。我尝试寻找这个,但找不到如何使用它的示例。
有人可以帮忙吗?
Thanks!
您可以使用functools.partial
(link 到文档 http://docs.python.org/library/functools.html#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))
上面的例子非常基本,但如果您有更多问题,我可以详细说明。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)