Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-02-09 18:00:05
avant
666 Les gens l'ont consulté

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_()
Copier après la connexion


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)
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal