Maison  >  Article  >  développement back-end  >  Le bouton PyQt4 clique sur s'inscrire plusieurs fois lorsque l'on clique dessus

Le bouton PyQt4 clique sur s'inscrire plusieurs fois lorsque l'on clique dessus

WBOY
WBOYavant
2024-02-09 18:00:05633parcourir

Le bouton PyQt4 clique sur sinscrire plusieurs fois lorsque lon clique dessus

Contenu de la question

Je suis nouveau sur pyqt4 et après de nombreuses recherches, je n'ai trouvé aucune information sur le problème que je vois dans l'interface graphique.

Le problème est que lorsque l'utilisateur clique sur le bouton getsingleitems, la fonction s'exécute le même nombre de fois que l'utilisateur clique sur getallitems . Un exemple est que si l'utilisateur clique sur getallitems pour remplir le champ des éléments, puis clique sur getsingleitem, alors getitems s'exécute une fois et les résultats sont imprimés une fois comme prévu. Cependant, si l'utilisateur sélectionne un autre élément dans la liste et clique à nouveau sur getallitems, puis clique sur getsingleitem, le résultat est que getitem s'exécute 2x, donc 2x est imprimé. Chaque exécution augmentera, donc même sans modifier la sélection, en cliquant sur getallitems 4x, puis getitem s'exécutera 4x en cliquant sur getsingleitem. La seule façon de l'actualiser est de fermer l'interface graphique et de la rouvrir. Toute aide serait grandement appréciée.

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

Bonne réponse


Apparemment, vous établissez une nouvelle connexion à chaque fois getitems 时添加到 getsingleitem.clicked, Donc clicked le signal est connecté plusieurs fois au même slot, Cela se traduit par le comportement que vous avez observé.

Lignes mobiles

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

De getitems__init__ devrait résoudre ce problème, je suppose.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer