Bonjour à tous ,
voilà je cherche à lancer plusieurs threads en cliquant sur un bouton seulement je n'y arrive pas sans que cela ne crash l'application, je m'explique :
Mon but est assez simple : je veux que lorsqu'un bouton est cliqué un thread contenant des actions "principales" à réaliser soit lancé mais également deux autres threads ( qui servent à mettre à jour les logs du programme ) simultanément seulement je n'y arrive d'aucune manière, avant toute chose voici la classe que j'utilise pour créer mes threads :
Ensuite l'idée c'est de connecter mon fameux boutton à une fonction qui initialisera les 3 threads, mais quand je fais cela ça ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class GenericThread(QtCore.QThread): def __init__(self, function, *args, **kwargs): QtCore.QThread.__init__(self) self.function = function self.args = args self.kwargs = kwargs def __del__(self): self.wait() def run(self): self.function(*self.args,**self.kwargs) return
Quand le bouton connecté a "launch_thread_principale" sera pressé, seul un thread ( le premier ) sera lancé ( si je me souviens bien car j'ai testé il y a une semaine ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 def launch_thread_principale(self): self.GenThread_action_principale = GenericThread(self.action_principale) self.GenThread_action_principale.start() self.GenThread_log_1 = GenericThread(self.init_log_1) self.GenThread_log_1.start() self.GenThread_log_2 = GenericThread(self.init_log_2) self.GenThread_log_2.start()
Si en revanche je fais 3 fonctions ( une pour chaque thread ) et que je fais trois connections au bouton, quand je clique l'application crash.
Merci d'avance !
EDIT IMPORTANT : jai changer le code de ma classe de thread je l'avais pas posté en entier !!
Partager