Bonjour,
Je me suis mis récemment à Python afin de développer des applications pour Gnome en utilisant la bibliothèque PyGTK. Cependant ma question ne concerne pas PyGTK. Actuellement, j'ai ma petite GUI et quand je clique sur le bouton "Ok" je veux que commande système s'exécute. J'ai essayé avec la commande ls par exemple et tout va bien en revanche j'ai tenter d'exécuter une commande dont le traitement est beaucoup plus long (encodage d'une vidéo). J'ai ainsi remarqué que ma GUI se fige (interface grisée) et impossible de l'utiliser, j'ai pensé que c'était donc un problème lié au fait que mon script Python n'utilisait pas de thread. J'ai donc déporté l'exécution de la commande système dans un thread mais le gros soucis que j'obtiens et que le thread ne démarre pas toujours dès l'appuie sur le bouton. Parfois oui parfois il faut attendre et on peut comme ceci lancer plusieurs fois la commande ce qui peut vite mettre à genoux le PC. Avez-vous une idée d'où cela peut provenir et aussi un moyen de régler ce soucis ?
Voilà comment je gère le thread si ça peut aider.
Le bouton ok va lancer la méthode suivante :
Et donc lancer un thread grâce à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 def integrate(self, source = None, event = None): integration = Integration(self.video, self.text, self.another_video) integration.start()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Integration(threading.Thread): def __init__(self, video, text, another_video): threading.Thread.__init__(self) self.video = video print 'Récuparation video = ' + self.video self.text = text print 'Récuparation text = ' + self.text self.another_video = another_video print 'Récuparation another_video = ' + self.another_video def run(self): print self.video + ' | ' + self.text + ' | ' + self.another_video
Partager