PyQt4按钮点击时点击注册多次

WBOY
发布: 2024-02-09 18:00:05
转载
637 人浏览过

PyQt4按钮点击时点击注册多次

问题内容

我是 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中文网其他相关文章!

来源:stackoverflow.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板