尽管有 pyqtSlot 装饰器,但 Slot 被调用了两次
Posted
技术标签:
【中文标题】尽管有 pyqtSlot 装饰器,但 Slot 被调用了两次【英文标题】:Slot gets called twice despite pyqtSlot decorator 【发布时间】:2016-12-03 08:37:13 【问题描述】:这是我在 qt5 设计器中制作的一个类。当我单击按钮时,该插槽被调用了两次。
class CustomerList(QWidget, Ui_CustomerList):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setupUi(self)
self.buttX.clicked.connect(self.on_buttX_clicked)
@pyqtSlot()
def on_buttX_clicked(self):
print("on_buttX_clicked")
if __name__ == '__main__':
app = QApplication(sys.argv)
w = CustomerList()
w.show()
sys.exit(app.exec_())
我在这里错过了什么?
【问题讨论】:
我对python不太了解,但也许你应该删除connect()行,因为信号是通过这个命令和名称连接的。 【参考方案1】:您的按钮在设计器中称为buttX
,因此setupUi()
中的“按名称自动连接”功能会找到匹配的插槽。
你可以
-
移除显式连接
重命名按钮
重命名槽
我个人会选择后者,即使用不具有“自动名称连接”正在寻找的模式的插槽名称。
例如。 onButtXClicked
【讨论】:
以上是关于尽管有 pyqtSlot 装饰器,但 Slot 被调用了两次的主要内容,如果未能解决你的问题,请参考以下文章
pyqt 按钮自动绑定到 on_..._clicked 函数,无需连接或 pyqtSlot
尽管使用 @Injectable(providedIn: 'root' ) 装饰器,Angular Service 在注入组件时不充当单例