单击PyQt4按钮多次单击注册

时间:2016-08-02 22:34:03

标签: python user-interface 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_()

1 个答案:

答案 0 :(得分:1)

显然,您要在getSingleItem.clicked的每次运行中添加与getitems的新连接, 所以clicked信号多次连接到同一个插槽, 这会导致你观察到的行为。

移动线

self.getSingleItem.clicked.connect(self.getitem)

getitems__init__我应该解决这个问题。