Bonjour,
Je travaille avec Python 3.5 et PyQt 5, et je rencontre un souci pour changer le widget central de ma fenêtre (QMainWindow
).
La fonction print_documents
est connectée au signal clicked
d'un bouton. Alors que je souhaiterais que le message s'affiche immédiatement, il se passe 5 secondes (le paramètre de sleep
) avant que setCentralWidget
ne prenne effet. J'ai le même effet de latence en remplaçant l'appel à sleep
par d'autres instructions.
1 2 3 4 5 6 7 8 9 | class MainWindow(QtWidgets.QMainWindow, Ui_main_window): def display_message(self, txt): widget = MessageWidget(txt) self.setCentralWidget(widget) def print_documents(self): self.display_message("Impression des documents en cours...") time.sleep(5) |
Est-il possible de remédier à cela ? A quoi est-ce dû ?
A noter que mon objectif est de permuter le widget central le temps du traitement :
1 2 3 4 5 6 | def print_documents(self): self.display_message("Impression des documents en cours...") time.sleep(5) # En vrai, un traitement self.display_current_project() # Cette fonction contient un appel à setCentralWidget |
Le code précédent génère le comportement suivant : au clic sur le bouton, le widget central ne bouge pas pendant 5 secondes, puis on le voit clignoter, c'est-à-dire passer du message au projet courant. C'est comme si la fonction précédente était équivalente à la suivante :
1 2 3 4 5 | def print_documents(self): time.sleep(5) # En vrai, un traitement self.display_message("Impression des documents en cours...") self.display_current_project() # Cette fonction contient un appel à setCentralWidget |
Merci !