我是 pyqt4 的新手,经过多次搜索后,我没有找到有关我在 gui 中看到的问题的信息。
问题是,当用户单击 getsingleitems 按钮时,该函数运行的次数与用户单击 getallitems 的次数相同。一个示例是,如果用户单击 getallitems 来填充 items 字段,然后单击 getsingleitem,则 getitems 运行一次,并且根据期望打印一次结果。但是,如果用户从列表中选择另一个项目并再次单击 getallitems,然后单击 getsingleitem,结果是 getitem 运行 2x,因此打印 2x。每次运行都会增加,因此即使不更改选择,单击 getallitems 4x,然后单击 getitem 将通过单击 getsingleitem 来运行 4x。刷新它的唯一方法是关闭 gui 并重新打开。如有任何帮助,我们将不胜感激。
class UpdateItem(QDialog, updateitem_ui.Ui_updateitem): def __init__(self): QDialog.__init__(self) self.setupUi(self) tests = ['Test1', 'Test2', 'Test3'] self.list.addItems(tests) self.exit.clicked.connect(self.close) self.setFocus() self.getAllItems.clicked.connect(self.getitems) def getitems(self): self.items.clear() self.items.addItems(self.list.currentText()) self.getSingleItem.clicked.connect(self.getitem) def getitem(self): self.item_id = self.items.currentText() print(self.item_id) app = QApplication(sys.argv) gui = UpdateItem() gui.show() app.exec_()
显然,您正在每次运行 getitems
时添加到 getsingleitem.clicked
的新连接,
因此 clicked
信号多次连接到同一个插槽,
这会导致您观察到的行为。
移动线路
self.getSingleItem.clicked.connect(self.getitem)
从 getitems
到 __init__
应该可以解决这个问题,我猜。
以上是PyQt4按钮点击时点击注册多次的详细内容。更多信息请关注PHP中文网其他相关文章!