Exec(), exec_() ou open?
Bonjour, j'ai trouvé dans la doc de PySide à cette page la recommandation suivante:
Avoid using this function; instead, use open(). Unlike exec(), open() is asynchronous, and does not spin an additional event loop. This prevents a series of dangerous bugs from happening (e.g. deleting the dialog’s parent while the dialog is open via exec()). When using open() you can connect to the finished() signal of QDialog to be notified when the dialog is closed.
Effectivement, avec open, cela fonctionne pour ouvrir une fenêtre, mais pas pour récupérer le code Accepted dans une condition comme dans la vidéo. Doit-on faire confiance à la documentation (qui dit aussi quelque part il me semble d'abandonner la fonction exec_)? Ou bien tout cela est-il juste du coupage de cheveux en 4 😜?
Autre remarque: depuis l'enregistrement de la vidéo, la méthode QMedfiaPlayer.setMedia semble avoir été remplacée par QMediaPlayer.setSource. Me trompe_je?
Salut Simon,
Tu peux en effet croire la documentation Qt for Python qui est à jour ^^
Il y a toujours plein de petits changements dans les docs, il faudra que je mette à jour ces formations PySide qui en ont bien besoin.
Tu peux du coup utiliser open et il faut comme indiqué dans la doc connecter le signal finished plutôt que de passer par le Accepted :
def open(self):
file_dialog = QtWidgets.QFileDialog(self)
file_dialog.setMimeTypeFilters(["video/mp4"])
movies_dir = QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.MoviesLocation)
file_dialog.setDirectory(movies_dir)
file_dialog.finished.connect(self.on_finished) # On connecte le signal finished à une méthode
file_dialog.open()
def on_finished(self):
print("Play") # Le code ici est appelé quand tu fermes le file_dialog
Pour le exec_ oui il fonctionne encore mais ils vont l'enlever à un moment donc il faudra se tenir prêt à se moment là si tu l'utilises encore dans tes scripts et que tu mets à jour la librairie pour modifier. Ou alors tu commences direct par utiliser exec comme ça pas de problème :)
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte