PyQt 连接中的参数

Posted

技术标签:

【中文标题】PyQt 连接中的参数【英文标题】:Parameter in PyQt connect 【发布时间】:2018-05-25 17:23:49 【问题描述】:

我看到的关于将 PyQt4 信号/插槽转换为 PyQt5 的示例非常简单,例如将按钮单击连接到更改标签。但是下面的语句应该如何转换:

self.connect(self.tableWidget,
    SIGNAL("itemChanged(QTableWidgetItem*)"),
    self.tableItemChanged)

itemChanged 的​​参数让我感到困惑。我试过了,通过类比的例子:

self.tableWidget.itemChanged(
    QTableWidgetItem*).connect(self.tableItemChanged)

谢谢!

【问题讨论】:

【参考方案1】:

当您建立new syntax 连接时,无需指明信号发送的参数类型,除非在同一个类中有同名的信号,但在您的情况下不是,所以以下将成为解决方案:

self.tableWidget.itemChanged.connect(self.tableItemChanged)

异常的典型例子是QComboBox:激活信号可以发送激活项的字符串或激活项的索引,所以这里要指明我们想要的数据类型。

combobox.activated[str].connect(self.handle_string)
combobox.activated[int].connect(self.handle_int)

【讨论】:

感谢 eyllanesc!您能否举一个您提到的异常示例“同一类中具有相同名称的信号”?

以上是关于PyQt 连接中的参数的主要内容,如果未能解决你的问题,请参考以下文章

在循环中连接 PyQt4 中的插槽和信号

使用 lambda 表达式连接 pyqt 中的插槽

PyQt在连接到信号时将参数发送到插槽

使用新式语法连接重载的 PyQT 信号

Python3 memory_profiler,同时使用lambda表达式连接PyQt5中的插槽

Python PyQt4 信号未触发连接方法