尽管有 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" 功能找到匹配的槽。
你可以
- 删除显式连接
- 重命名按钮
- 重命名插槽
我个人会选择后者,即使用不具有 "auto name connect" 正在寻找的模式的插槽名称。
例如。 onButtXClicked
这是我在 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" 功能找到匹配的槽。
你可以
- 删除显式连接
- 重命名按钮
- 重命名插槽
我个人会选择后者,即使用不具有 "auto name connect" 正在寻找的模式的插槽名称。
例如。 onButtXClicked