PyQt 中这两个 clicked() 信号有啥区别?

Posted

技术标签:

【中文标题】PyQt 中这两个 clicked() 信号有啥区别?【英文标题】:What is a difference between these two clicked() signals in PyQt?PyQt 中这两个 clicked() 信号有什么区别? 【发布时间】:2016-11-01 10:37:40 【问题描述】:
QtCore.QObject.connect(my_button, QtCore.SIGNAL('clicked()'), my_func)

my_button.clicked.connect(my_func)

我通常使用第一个选项,但后来我找到了第二个,想知道它们之间有什么区别。

【问题讨论】:

【参考方案1】:

第一个选项是old-style signal and slot syntax,现在已过时。你仍然可以在 PyQt4 中使用它,但在 PyQt5 中根本不支持它。第二个选项是new-style signal and slot syntax,可用于 PyQt5 和所有最新版本的 PyQt4(它是在 v4.5 中引入的)。

PyQt 文档列出了旧式语法的以下缺点:

它需要了解 C++ 类型的信号参数。 如果输入错误的信号名称或签名很容易出错 - 则不会引发异常,无论是当信号是 连接或发射。 很冗长。 它不是 Pythonic。

【讨论】:

以上是关于PyQt 中这两个 clicked() 信号有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

将 PyQt4 代码适配到 PyQt5,SIGNAL 问题

使用pyqt4写GUI小程序时一个clicked信号调用三次槽函数

pyqt 按钮自动绑定到 on_..._clicked 函数,无需连接或 pyqtSlot

pyqt5中的信号槽的使用

PyQt4发射信号

SQL Server 中这两个循环删除查询有啥区别