【问题标题】:PyQt and QSignalMapper/lambdas - multiple signals, single slotPyQt 和 QSignalMapper/lambdas - 多信号,单槽
【发布时间】:2011-04-23 01:46:15
【问题描述】:

我在 PyQt 的菜单上有一个操作列表,每个操作对应我想要显示的每个不同的提要。所以我有一个 Y 将活动供稿设置为 Y,Z 将其设置为 Z,等等(对于网络漫画阅读程序)。

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

但是,我希望那个 slot 函数,比如说它叫做 Foo,接受一个参数来决定点击了什么。所以如果 X 被点击,那么 X、Y 会通过 Y 等等。

环顾四周,有一个 SO 问题说要使用 lambda,但它看起来不太对劲。

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

谁能帮忙?

谢谢!

【问题讨论】:

    标签: python qt pyqt signals signals-slots


    【解决方案1】:

    您可以使用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))
    

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

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 2012-07-13
      • 1970-01-01
      • 2011-08-16
      • 2010-11-07
      • 2012-02-11
      • 2012-06-08
      • 2013-10-22
      • 1970-01-01
      相关资源
      最近更新 更多