尽管有 pyqtSlot 装饰器,但 Slot 被调用了两次

Slot gets called twice despite pyqtSlot decorator

这是我在 qt5 设计器中制作的 class 表格。单击按钮时,插槽被调用两次。

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_())

我在想什么?

您的按钮在设计器中称为 buttX,因此 setupUi() 中的 "Auto connect by name" 功能找到匹配的槽。

你可以

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

我个人会选择后者,即使用不具有 "auto name connect" 正在寻找的模式的插槽名称。 例如。 onButtXClicked