我是 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按钮点击时点击注册多次的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756