Bonjour,
je veux lancer des programmes à l’aide de radiobouton. Dans le cas d’un flatpak, il faut un certain temps pour l’ouvrir. Dans ce cas le radiobouton ne s’active qu’après la fermeture du flatpak correctement lancé. J’ai pensé que c’était une histoire de thread mais je n’y arrive visiblement pas. Un petit coup de main serait le bienvenu.
Je ne suis pas un habitué de tk mais j’aime beaucoup utiliser le module queue pour dialoguer entre des threads.
Dans cet exemple le “main thread” géré par tk utilise queue.put pour donner des instructions au worker_thread, le queue.put n’est pas bloquant donc le thread tk n’est jamais bloqué.
Le worker thread lui utilise queue.get pour attendre du travail (c’est bloquant, donc tant que la queue est vide, le worker thread ne fait rien).
J’ai implémenté deux tâches : run et exit, la première pour exécuter une commande et la seconde pour faire quitter le thread proprement.
Par contre vu que c’est des radio-button j’imagine qu’il faut tuer l’application qui s’exécute lorsqu’elle est dé-selectionnée ? Je n’ai pas implémenté ce comportement dans le doute.
cela marche super bien (je croyais qu’il fallait installer un module queue, mais non).
Je présume que “run” aurait pû être remplacé par un nom quelconque
et idem pour task_args ?
Exact, run et exit sont juste des chaînes de caractères, task_args c’est juste un nom de variable, tu fais ce que tu veux avec.
Par contre attention a bien toujours exécuter un appel à queue.task_done() pour chaque appel à queue.get(), sinon la file perd le fil (haha) de ce qui est fait et pas fait, et tu ne pourras plus jamais la queue.join().