我是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_()
答案 0 :(得分:1)
显然,您要在getSingleItem.clicked
的每次运行中添加与getitems
的新连接,
所以clicked
信号多次连接到同一个插槽,
这会导致你观察到的行为。
移动线
self.getSingleItem.clicked.connect(self.getitem)
从getitems
到__init__
我应该解决这个问题。