1 pièce(s) jointe(s)
Re : PIL ImageTK et Thread => mofications KO
Bonjour VinsS,
Merci pour ton aide,
J'ai corrigé mon pgm en supprimant
- les variables globlals
- en ajoutant l'héritage "Object" à ma class Application
le problème reste le même sous l'environnement Débian : blocage ImageTk.PhotoImage( ...) quand je donne l'info au thread de finir son execution
(evenement self._fin.set() de mon object self._fin = threading.Event()
Oui, faute de carburant, je devrais pouvoir mettre fin à l'execution Run() du thread
mais il bloque tjs sur la même instruction ...
je contourne en forçant l'arrêt du thread par l'instruction _Thread__stop() , mais ce n'est pas logique ...
fichier mis à jour : Pièce jointe 143587
1 pièce(s) jointe(s)
Re : PIL ImageTK et Thread => modifications KO
VinsS
je pensais que la methode utilisée pour quitter le bloc run() faisait la même chose .
Elle permetait en plus de ne pas attendre la fin d'une temporisation (quand on utilise un wait exemple "self._fin.wait(2.0)")
la doc https://docs.python.org/2/library/threading.html fait référence à l'object Event
Il sert normalement à la communication entre thread mais il peut être détourné ...
voir explications : http://python.developpez.com/faq/?page=Thread
j'ai intégré tes modifications => suppression de l'appel au gestionnaire d'évenement et utilisation d'un flag
le problème est toujours le même .
Fichier mis à jour
Pièce jointe 143595
Re : PIL ImageTK et Thread => Tjs KO
Bonjour,
J'ai pris en compte les remarques de tarball69 en effectuant dans la boucle du bloc Run() un Update du widget Canvas
cela ne change rien ...
J'ai effectué deux autres tests
- en supprimant le widget Canvas et en affectant l'imageTk à un Label . Le résultat est toujours le même sous Débian ...
- en supprimant PIL sous Débian et en installant Pillow => même problème.
Rq: pour les options de compil de Tcl/Tk , je ne suis contenté d'une install des binaires pour PIL (apt-get install python-image python-image-tk)
ces paquets sont liés aux dépendances tcl8.5 et tk8.5 => donc pas de compilation dans mon cas.
Re : PIL ImageTK et Thread => support thread actif sous Tcl/Tk
Bonjour,
Pour faire suite à la réponse de tarball69,
J'ai vérifié que le support du thread est bien activé sur l'environnement TCL8.5 de la plateforme ARM (sous Debian)
en m'appuyant sur ce post : https://mail.python.org/pipermail/tk...er/001684.html
le programme ne crashe pas et la variable renvoie tcl_platform(threaded) "1"
On peut donc supposer que le support thread est bien actif pourTk/Tcl
ci-dessous le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
import Tkinter
import threading
def test(text_widget):
text_widget.config(text='threaded :' + Tkinter.Tk().getvar("tcl_platform(threaded)"))
def try_it(text_widget):
threading.Thread(target=test, args=(text_widget, )).start()
lbl = Tkinter.Label()
lbl.pack()
lbl.after(10, lambda: try_it(lbl))
lbl.mainloop() |
Avez-vous idée ?
PS : Je dois insérer un système de pause dans l'affichage de la vidéo.
Si le comportement est le même , je risque de ne pas pouvoir implémenter cette fonctionnalité ...
merci d'avance
Re : PIL ImageTK et Thread =>ajout d'une méthode dans le thread
Bonjour,
Pour faire suite à la réponse de wiztricks,
J'ai ajouté la methode qui fonctionne mais le problème reste le même quand on sort de la boucle du run()
bonne soirée