私はPyQt4が新しく、いくつかの検索を行った後、私のGUIに表示されている問題に関する情報は見つかりませんでした。PyQt4ボタンをクリックして複数回クリック登録する
ユーザーがgetSingleItemsボタンをクリックすると、その関数は、ユーザーがgetAllItemsをクリックしたのと同じ時間実行されるという問題があります。たとえば、ユーザーがgetAllItemsをクリックして項目フィールドに値を入力した後、getSingleItemをクリックすると、getitemsが1回実行され、期待どおりに1回出力されます。しかし、ユーザーがリストから別の項目を選択してgetAllItemsを再度クリックすると、getSingleItemでgetitemが2回実行され結果が2倍になるという結果になります。 getAllItems 4xをクリックすると、選択項目を変更しなくてもgetItemをクリックすると、getSingleItemを1回クリックするだけで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()'メソッドは、クリックして接続します。それは '__init__'にあるべきではありませんか? – NuclearPeon
あなたは正しいです。その単純な変更はそれを修正した。残りの接続を__init___に移動する必要があります。ありがとう! – Mauricio