我试图编写一个连接到不同 pyqt 信号的插槽。我仍然无法理解的是两个装饰器 @pyqtSignature() 和 @pyqtSlot() 之间的区别。
连接到继承自 QAbstractButton 的 QPushButton 的 pyqt clicked 信号的示例,我在使用 @pyqtSignature("") 时使用了以下语法 on_widgetName_signalName
:
@pyqtSignature("")
def on_bn_gpx_select_file_clicked(self):
"""
Run when QPushButton is pressed, or do something
"""
pass
现在使用@pyqtSlot()
@pyqtSlot()
def on_bn_gpx_select_file_clicked(self):
"""
Run when QPushButton is pressed, or do something
"""
pass
我的问题是,这两个装饰器有什么区别,什么时候应该使用@pyqtSignature 或@pyqtSlot()
谢谢
最佳答案
pyqtSignature
装饰器是 old-style signal and slot syntax 的一部分, 已被 new-style signal and slot syntax 取代在 PyQt-4.5 中。
两个装饰器都有相同的目的,即显式地将 python 方法标记为 Qt 槽并为其指定 C++ 签名(最常见的是为了选择特定的重载)。两个装饰器之间唯一相关的区别是 pyqtSlot
有更多的 pythonic API。
永远不需要在新代码中使用 pyqtSignature
- 它只是为了向后兼容才真正需要。
关于python - @pyqtSignature() 和@pyqtSlot() pyqt 装饰器有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30215328/