Heim  >  Artikel  >  Backend-Entwicklung  >  Klicken Sie auf die PyQt4-Schaltfläche und registrieren Sie sie mehrmals, wenn Sie darauf klicken

Klicken Sie auf die PyQt4-Schaltfläche und registrieren Sie sie mehrmals, wenn Sie darauf klicken

WBOY
WBOYnach vorne
2024-02-09 18:00:05639Durchsuche

Klicken Sie auf die PyQt4-Schaltfläche und registrieren Sie sie mehrmals, wenn Sie darauf klicken

Frageninhalt

Ich bin neu bei pyqt4 und nach vielen Suchen habe ich keine Informationen zu dem Problem gefunden, das ich in der GUI sehe.

Das Problem besteht darin, dass, wenn der Benutzer auf die Schaltfläche getsingleitems klickt, die Funktion genauso oft ausgeführt wird, wie der Benutzer auf getallitems klickt. Wenn der Benutzer beispielsweise auf „getallitems“ klickt, um das Artikelfeld auszufüllen, und dann auf „getsingleitem“ klickt, wird „getitems“ einmal ausgeführt und die Ergebnisse werden wie erwartet einmal gedruckt. Wenn der Benutzer jedoch ein anderes Element aus der Liste auswählt und erneut auf „getallitems“ und dann auf „getsingleitem“ klickt, führt dies dazu, dass „getitem“ 2x ausgeführt wird, sodass 2x gedruckt wird. Bei jedem Durchlauf wird die Zahl erhöht, sodass Sie auch ohne Änderung der Auswahl viermal auf „getallitems“ klicken und dann „getitem“ durch Klicken auf „getsingleitem“ viermal ausführen können. Die einzige Möglichkeit, es zu aktualisieren, besteht darin, die GUI zu schließen und erneut zu öffnen. Jede Hilfe wäre sehr dankbar.

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_()

Richtige Antwort


Anscheinend stellen Sie jedes Mal eine neue Verbindung her getitems 时添加到 getsingleitem.clicked, Also clicked das Signal ist mehrmals mit demselben Steckplatz verbunden, Dies führt zu dem von Ihnen beobachteten Verhalten.

Mobilfunkanschlüsse

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

From getitems__init__ sollte dieses Problem lösen, denke ich.

Das obige ist der detaillierte Inhalt vonKlicken Sie auf die PyQt4-Schaltfläche und registrieren Sie sie mehrmals, wenn Sie darauf klicken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen