【问题标题】:PyQt New Style Signals & Slots - Can't pass parametersPyQt New Style Signals & Slots - 无法传递参数
【发布时间】:2013-06-17 00:03:26
【问题描述】:

在旧式信号和插槽中,我可以像这样将自己的参数传递给处理程序。 (在这种情况下,我传递了一个 Widget 和一个对 self 的引用)

obj.connect(form.tableScores,QtCore.SIGNAL("itemChanged(QTableWidgetItem*)"),lambda: itemChanged(form,obj))

唯一的缺点是我丢失了 QTableWidgetItem 数据,但我可以通过表单参数中的小部件引用来获取它。关键是我需要访问这个方法给我的 obj。

但是在新样式中我得到一个错误。

form.tableScores.itemChanged.connect(itemChanged(form,obj))

我似乎仅限于这种格式

form.tableScores.itemChanged.connect(itemChanged)

有没有一种方法可以让我在新样式的 Signals 和 Slots 中传递我自己的参数,并且最好还保留对 QTableWidgetItem 的引用?

【问题讨论】:

    标签: python-2.7 pyqt signals-slots


    【解决方案1】:

    是的,你可以使用 functools 模块

    示例:

    import functools
    

    然后你可以使用你的参数:

    form.tableScores.itemChanged.connect(functools.partial(itemChanged, param1, param2, param3, [...]))
    

    【讨论】:

      猜你喜欢
      • 2014-08-17
      • 2012-07-25
      • 2011-12-13
      • 2021-12-14
      • 2012-03-05
      • 2020-06-07
      • 2014-05-16
      • 2013-07-24
      • 2018-12-18
      相关资源
      最近更新 更多