【问题标题】:Slot gets called twice despite pyqtSlot decorator尽管有 pyqtSlot 装饰器,但 Slot 被调用了两次
【发布时间】: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()行,因为信号是通过这个命令和名称连接的。

标签: qt signals-slots pyqt5


【解决方案1】:

您的按钮在设计器中称为buttX,因此setupUi() 中的“按名称自动连接”功能会找到匹配的插槽。

你可以

  1. 移除显式连接
  2. 重命名按钮
  3. 重命名槽

我个人会选择后者,即使用不具有“自动名称连接”正在寻找的模式的插槽名称。 例如。 onButtXClicked

【讨论】:

    猜你喜欢
    • 2019-02-22
    • 2012-08-14
    • 1970-01-01
    • 2019-10-06
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2019-11-07
    相关资源
    最近更新 更多