首页 >后端开发 >Python教程 >PyQt4按钮点击时点击注册多次

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

WBOY
WBOY转载
2024-02-09 18:00:05659浏览

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删除