from Tkinter import *
from math import *
import time,threading
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("Essai")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
Thread_cible(can,cible,valCible).start()
Thread_viseur(can,ligneh,lignev,valViseur).start()
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.001
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.010)
class Thread_viseur(threading.Thread):
def __init__(self,canevas,dessinh,dessinv,viseur):
threading.Thread.__init__(self)
self.can,self.dessinh,self.dessinv,self.valViseurÊnevas,dessinh,dessi
nv,viseur
def run(self):
def mouseMove(event):
x2,y2=event.x,event.y
self.can.coords(self.dessinh,x2-30,y2,x2+30,y2)
self.can.coords(self.dessinv,x2,y2+30,x2,y2-30)
self.valViseur.configure(text="viseur="+str(x2)+"/"+str(y2))
def touche(event) :
"hgkhghg"
#Recepteur d'evenements (souris)
self.can.bind("<Button1-Motion>",mouseMove)
self.can.bind_all('<Key>',touche) #Recepteur
d'evenements (clavier)
from Tkinter import *
from math import *
import time,threading
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("Essai")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
Thread_cible(can,cible,valCible).start()
Thread_viseur(can,ligneh,lignev,valViseur).start()
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.001
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.010)
class Thread_viseur(threading.Thread):
def __init__(self,canevas,dessinh,dessinv,viseur):
threading.Thread.__init__(self)
self.can,self.dessinh,self.dessinv,self.valViseurÊnevas,dessinh,dessi
nv,viseur
def run(self):
def mouseMove(event):
x2,y2=event.x,event.y
self.can.coords(self.dessinh,x2-30,y2,x2+30,y2)
self.can.coords(self.dessinv,x2,y2+30,x2,y2-30)
self.valViseur.configure(text="viseur="+str(x2)+"/"+str(y2))
def touche(event) :
"hgkhghg"
#Recepteur d'evenements (souris)
self.can.bind("<Button1-Motion>",mouseMove)
self.can.bind_all('<Key>',touche) #Recepteur
d'evenements (clavier)
from Tkinter import *
from math import *
import time,threading
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("Essai")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
Thread_cible(can,cible,valCible).start()
Thread_viseur(can,ligneh,lignev,valViseur).start()
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.001
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.010)
class Thread_viseur(threading.Thread):
def __init__(self,canevas,dessinh,dessinv,viseur):
threading.Thread.__init__(self)
self.can,self.dessinh,self.dessinv,self.valViseurÊnevas,dessinh,dessi
nv,viseur
def run(self):
def mouseMove(event):
x2,y2=event.x,event.y
self.can.coords(self.dessinh,x2-30,y2,x2+30,y2)
self.can.coords(self.dessinv,x2,y2+30,x2,y2-30)
self.valViseur.configure(text="viseur="+str(x2)+"/"+str(y2))
def touche(event) :
"hgkhghg"
#Recepteur d'evenements (souris)
self.can.bind("<Button1-Motion>",mouseMove)
self.can.bind_all('<Key>',touche) #Recepteur
d'evenements (clavier)
Nouveau sur Python, j'ai écrit un petit programme, ou un point se
déplace seul et ou l'utilisateur pilote une croix avec la souris.
Le programme plante régulièrement en donnant des messages d'erreur qui
me semblent aberrants..
J'ai l'impression qu'il y a un conflit entre les deux threads, mais je
ne trouve pas.
Pourriez vous m'aider ?
Merci
Voici le code :
from Tkinter import *
from math import *
import time,threading
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("Essai")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
Thread_cible(can,cible,valCible).start()
Thread_viseur(can,ligneh,lignev,valViseur).start()
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.001
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.010)
class Thread_viseur(threading.Thread):
def __init__(self,canevas,dessinh,dessinv,viseur):
threading.Thread.__init__(self)
self.can,self.dessinh,self.dessinv,self.valViseurÊnevas,dessinh,dessi
nv,viseur
def run(self):
def mouseMove(event):
x2,y2=event.x,event.y
self.can.coords(self.dessinh,x2-30,y2,x2+30,y2)
self.can.coords(self.dessinv,x2,y2+30,x2,y2-30)
self.valViseur.configure(text="viseur="+str(x2)+"/"+str(y2))
def touche(event) :
"hgkhghg"
#Recepteur d'evenements (souris)
self.can.bind("<Button1-Motion>",mouseMove)
self.can.bind_all('<Key>',touche) #Recepteur
d'evenements (clavier)
Nouveau sur Python, j'ai écrit un petit programme, ou un point se
déplace seul et ou l'utilisateur pilote une croix avec la souris.
Le programme plante régulièrement en donnant des messages d'erreur qui
me semblent aberrants..
J'ai l'impression qu'il y a un conflit entre les deux threads, mais je
ne trouve pas.
Pourriez vous m'aider ?
Merci
Voici le code :
from Tkinter import *
from math import *
import time,threading
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("Essai")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
Thread_cible(can,cible,valCible).start()
Thread_viseur(can,ligneh,lignev,valViseur).start()
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.001
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.010)
class Thread_viseur(threading.Thread):
def __init__(self,canevas,dessinh,dessinv,viseur):
threading.Thread.__init__(self)
self.can,self.dessinh,self.dessinv,self.valViseurÊnevas,dessinh,dessi
nv,viseur
def run(self):
def mouseMove(event):
x2,y2=event.x,event.y
self.can.coords(self.dessinh,x2-30,y2,x2+30,y2)
self.can.coords(self.dessinv,x2,y2+30,x2,y2-30)
self.valViseur.configure(text="viseur="+str(x2)+"/"+str(y2))
def touche(event) :
"hgkhghg"
#Recepteur d'evenements (souris)
self.can.bind("<Button1-Motion>",mouseMove)
self.can.bind_all('<Key>',touche) #Recepteur
d'evenements (clavier)
Nouveau sur Python, j'ai écrit un petit programme, ou un point se
déplace seul et ou l'utilisateur pilote une croix avec la souris.
Le programme plante régulièrement en donnant des messages d'erreur qui
me semblent aberrants..
J'ai l'impression qu'il y a un conflit entre les deux threads, mais je
ne trouve pas.
Pourriez vous m'aider ?
Merci
Voici le code :
from Tkinter import *
from math import *
import time,threading
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("Essai")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
Thread_cible(can,cible,valCible).start()
Thread_viseur(can,ligneh,lignev,valViseur).start()
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.001
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.010)
class Thread_viseur(threading.Thread):
def __init__(self,canevas,dessinh,dessinv,viseur):
threading.Thread.__init__(self)
self.can,self.dessinh,self.dessinv,self.valViseurÊnevas,dessinh,dessi
nv,viseur
def run(self):
def mouseMove(event):
x2,y2=event.x,event.y
self.can.coords(self.dessinh,x2-30,y2,x2+30,y2)
self.can.coords(self.dessinv,x2,y2+30,x2,y2-30)
self.valViseur.configure(text="viseur="+str(x2)+"/"+str(y2))
def touche(event) :
"hgkhghg"
#Recepteur d'evenements (souris)
self.can.bind("<Button1-Motion>",mouseMove)
self.can.bind_all('<Key>',touche) #Recepteur
d'evenements (clavier)
Nouveau sur Python, j'ai écrit un petit programme, ou un point se
déplace seul et ou l'utilisateur pilote une croix avec la souris.
Le programme plante régulièrement en donnant des messages d'erreur qui
me semblent aberrants..
J'ai l'impression qu'il y a un conflit entre les deux threads, mais je
ne trouve pas.
class Thread_viseur(threading.Thread):
def __init__(self,canevas,dessinh,dessinv,viseur):
threading.Thread.__init__(self)
self.can,self.dessinh,self.dessinv,self.valViseurÊnevas,dessinh,dessi
nv,viseur
def run(self):
def mouseMove(event):
x2,y2=event.x,event.y
self.can.coords(self.dessinh,x2-30,y2,x2+30,y2)
self.can.coords(self.dessinv,x2,y2+30,x2,y2-30)
self.valViseur.configure(text="viseur="+str(x2)+"/"+str(y2))
def touche(event) :
"hgkhghg"
#Recepteur d'evenements (souris)
self.can.bind("<Button1-Motion>",mouseMove)
self.can.bind_all('<Key>',touche) #Recepteur
d'evenements (clavier)
Nouveau sur Python, j'ai écrit un petit programme, ou un point se
déplace seul et ou l'utilisateur pilote une croix avec la souris.
Le programme plante régulièrement en donnant des messages d'erreur qui
me semblent aberrants..
J'ai l'impression qu'il y a un conflit entre les deux threads, mais je
ne trouve pas.
class Thread_viseur(threading.Thread):
def __init__(self,canevas,dessinh,dessinv,viseur):
threading.Thread.__init__(self)
self.can,self.dessinh,self.dessinv,self.valViseurÊnevas,dessinh,dessi
nv,viseur
def run(self):
def mouseMove(event):
x2,y2=event.x,event.y
self.can.coords(self.dessinh,x2-30,y2,x2+30,y2)
self.can.coords(self.dessinv,x2,y2+30,x2,y2-30)
self.valViseur.configure(text="viseur="+str(x2)+"/"+str(y2))
def touche(event) :
"hgkhghg"
#Recepteur d'evenements (souris)
self.can.bind("<Button1-Motion>",mouseMove)
self.can.bind_all('<Key>',touche) #Recepteur
d'evenements (clavier)
Nouveau sur Python, j'ai écrit un petit programme, ou un point se
déplace seul et ou l'utilisateur pilote une croix avec la souris.
Le programme plante régulièrement en donnant des messages d'erreur qui
me semblent aberrants..
J'ai l'impression qu'il y a un conflit entre les deux threads, mais je
ne trouve pas.
class Thread_viseur(threading.Thread):
def __init__(self,canevas,dessinh,dessinv,viseur):
threading.Thread.__init__(self)
self.can,self.dessinh,self.dessinv,self.valViseurÊnevas,dessinh,dessi
nv,viseur
def run(self):
def mouseMove(event):
x2,y2=event.x,event.y
self.can.coords(self.dessinh,x2-30,y2,x2+30,y2)
self.can.coords(self.dessinv,x2,y2+30,x2,y2-30)
self.valViseur.configure(text="viseur="+str(x2)+"/"+str(y2))
def touche(event) :
"hgkhghg"
#Recepteur d'evenements (souris)
self.can.bind("<Button1-Motion>",mouseMove)
self.can.bind_all('<Key>',touche) #Recepteur
d'evenements (clavier)
Comme je le disais sur mon premier post, je débute en python,
donc il est fort possible que je n'ai pas bien compris le principe des
bindings en Tkinter...
En tout cas, merci pour vos explications et conseils avisés qui me
permettront de faire des progrès (peut être)...
et excusez moi pour les problèmes de visibilité que je résoudrai dans
mes prochains posts.Pour ce que tu cherches à faire, il vaut mieux éviter les threads. Tkinter
a une possibilité beaucoup plus simple à utiliser qui permet de lancer du
code régulièrement sans bloquer les événements utilisateurs. Regarde la
méthode "after" sur les widgets Tkinter; elle te permettra de faire ce que
tu veux sans problème, sans utiliser aucun thread.
Dans une première version, j'avais utilisé cette méthode qui
fonctionnait,
mais je pensais plus élégant les threads (à tort peut être) et
surtout, je pensais
pouvoir plus facilement gérer la vitesse de déplacement...
Jerome
Comme je le disais sur mon premier post, je débute en python,
donc il est fort possible que je n'ai pas bien compris le principe des
bindings en Tkinter...
En tout cas, merci pour vos explications et conseils avisés qui me
permettront de faire des progrès (peut être)...
et excusez moi pour les problèmes de visibilité que je résoudrai dans
mes prochains posts.
Pour ce que tu cherches à faire, il vaut mieux éviter les threads. Tkinter
a une possibilité beaucoup plus simple à utiliser qui permet de lancer du
code régulièrement sans bloquer les événements utilisateurs. Regarde la
méthode "after" sur les widgets Tkinter; elle te permettra de faire ce que
tu veux sans problème, sans utiliser aucun thread.
Dans une première version, j'avais utilisé cette méthode qui
fonctionnait,
mais je pensais plus élégant les threads (à tort peut être) et
surtout, je pensais
pouvoir plus facilement gérer la vitesse de déplacement...
Jerome
Comme je le disais sur mon premier post, je débute en python,
donc il est fort possible que je n'ai pas bien compris le principe des
bindings en Tkinter...
En tout cas, merci pour vos explications et conseils avisés qui me
permettront de faire des progrès (peut être)...
et excusez moi pour les problèmes de visibilité que je résoudrai dans
mes prochains posts.Pour ce que tu cherches à faire, il vaut mieux éviter les threads. Tkinter
a une possibilité beaucoup plus simple à utiliser qui permet de lancer du
code régulièrement sans bloquer les événements utilisateurs. Regarde la
méthode "after" sur les widgets Tkinter; elle te permettra de faire ce que
tu veux sans problème, sans utiliser aucun thread.
Dans une première version, j'avais utilisé cette méthode qui
fonctionnait,
mais je pensais plus élégant les threads (à tort peut être) et
surtout, je pensais
pouvoir plus facilement gérer la vitesse de déplacement...
Jerome
Pour ce que tu cherches à faire, il vaut mieux éviter les threads. Tki nter
a une possibilité beaucoup plus simple à utiliser qui permet de lancer du
code régulièrement sans bloquer les événements utilisateurs. Regar de la
méthode "after" sur les widgets Tkinter; elle te permettra de faire ce q ue
tu veux sans problème, sans utiliser aucun thread.
Pour ce que tu cherches à faire, il vaut mieux éviter les threads. Tki nter
a une possibilité beaucoup plus simple à utiliser qui permet de lancer du
code régulièrement sans bloquer les événements utilisateurs. Regar de la
méthode "after" sur les widgets Tkinter; elle te permettra de faire ce q ue
tu veux sans problème, sans utiliser aucun thread.
Pour ce que tu cherches à faire, il vaut mieux éviter les threads. Tki nter
a une possibilité beaucoup plus simple à utiliser qui permet de lancer du
code régulièrement sans bloquer les événements utilisateurs. Regar de la
méthode "after" sur les widgets Tkinter; elle te permettra de faire ce q ue
tu veux sans problème, sans utiliser aucun thread.
En essayant de tenir compte de toutes vos remarques,
voici le code modifié et qui semble fonctionner.
Je reste preneur de tous vos commentaires pour progresser.
Merci
# -*- coding: cp1252 -*-
from Tkinter import *
from math import *
import os
import wx
import time,threading
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.005
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.001)
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("ADI Version 2006")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
def mouseMove(event):
global x2,y2
x2,y2=event.x,event.y
can.coords(ligneh,x2-30,y2,x2+30,y2)
can.coords(lignev,x2,y2+30,x2,y2-30)
valViseur.configure(text=str(x2)+"/"+str(y2))
#Recepteur d'evenements (souris)
can.bind("<Button1-Motion>",mouseMove)
Thread_cible(can,cible,valCible).start()
if __name__=="__main__":
App().mainloop()
En essayant de tenir compte de toutes vos remarques,
voici le code modifié et qui semble fonctionner.
Je reste preneur de tous vos commentaires pour progresser.
Merci
# -*- coding: cp1252 -*-
from Tkinter import *
from math import *
import os
import wx
import time,threading
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.005
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.001)
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("ADI Version 2006")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
def mouseMove(event):
global x2,y2
x2,y2=event.x,event.y
can.coords(ligneh,x2-30,y2,x2+30,y2)
can.coords(lignev,x2,y2+30,x2,y2-30)
valViseur.configure(text=str(x2)+"/"+str(y2))
#Recepteur d'evenements (souris)
can.bind("<Button1-Motion>",mouseMove)
Thread_cible(can,cible,valCible).start()
if __name__=="__main__":
App().mainloop()
En essayant de tenir compte de toutes vos remarques,
voici le code modifié et qui semble fonctionner.
Je reste preneur de tous vos commentaires pour progresser.
Merci
# -*- coding: cp1252 -*-
from Tkinter import *
from math import *
import os
import wx
import time,threading
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.005
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.001)
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("ADI Version 2006")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
def mouseMove(event):
global x2,y2
x2,y2=event.x,event.y
can.coords(ligneh,x2-30,y2,x2+30,y2)
can.coords(lignev,x2,y2+30,x2,y2-30)
valViseur.configure(text=str(x2)+"/"+str(y2))
#Recepteur d'evenements (souris)
can.bind("<Button1-Motion>",mouseMove)
Thread_cible(can,cible,valCible).start()
if __name__=="__main__":
App().mainloop()
wrote:En essayant de tenir compte de toutes vos remarques,
voici le code modifié et qui semble fonctionner.
Je reste preneur de tous vos commentaires pour progresser.
Merci
# -*- coding: cp1252 -*-
from Tkinter import *
from math import *
import os
import wx
import time,threading
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.005
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.001)
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("ADI Version 2006")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
def mouseMove(event):
global x2,y2
x2,y2=event.x,event.y
can.coords(ligneh,x2-30,y2,x2+30,y2)
can.coords(lignev,x2,y2+30,x2,y2-30)
valViseur.configure(text=str(x2)+"/"+str(y2))
#Recepteur d'evenements (souris)
can.bind("<Button1-Motion>",mouseMove)
Thread_cible(can,cible,valCible).start()
if __name__=="__main__":
App().mainloop()
Tu remarque que ton application tourne toujours après la fermeture de la
fenêtre:
# -*- coding: cp1252 -*-
from Tkinter import *
from math import *
import os
import wx
import time,threading
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur, p_parent):
threading.Thread.__init__(self)
self.m_parent = p_parent
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while False == self.m_parent.m_quit:
t=t+0.005
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.001)
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("ADI Version 2006")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
#Recepteur d'evenements (souris)
can.bind("<Button1-Motion>",self.mouseMove)
can.bind("<Destroy>",self.Destroy)
self.m_quit = False
self.m_thread = Thread_cible(can,cible,valCible,self)
self.m_thread.start()
def Destroy(self,event):
print 'QUITTING'
self.m_quit = True
self.m_thread.join()
def mouseMove(self,event):
# global x2,y2
x2,y2=event.x,event.y
can.coords(ligneh,x2-30,y2,x2+30,y2)
can.coords(lignev,x2,y2+30,x2,y2-30)
valViseur.configure(text=str(x2)+"/"+str(y2))
if __name__=="__main__":
App().mainloop()
j.cormouls@neuf.fr wrote:
En essayant de tenir compte de toutes vos remarques,
voici le code modifié et qui semble fonctionner.
Je reste preneur de tous vos commentaires pour progresser.
Merci
# -*- coding: cp1252 -*-
from Tkinter import *
from math import *
import os
import wx
import time,threading
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.005
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.001)
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("ADI Version 2006")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
def mouseMove(event):
global x2,y2
x2,y2=event.x,event.y
can.coords(ligneh,x2-30,y2,x2+30,y2)
can.coords(lignev,x2,y2+30,x2,y2-30)
valViseur.configure(text=str(x2)+"/"+str(y2))
#Recepteur d'evenements (souris)
can.bind("<Button1-Motion>",mouseMove)
Thread_cible(can,cible,valCible).start()
if __name__=="__main__":
App().mainloop()
Tu remarque que ton application tourne toujours après la fermeture de la
fenêtre:
# -*- coding: cp1252 -*-
from Tkinter import *
from math import *
import os
import wx
import time,threading
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur, p_parent):
threading.Thread.__init__(self)
self.m_parent = p_parent
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while False == self.m_parent.m_quit:
t=t+0.005
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.001)
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("ADI Version 2006")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
#Recepteur d'evenements (souris)
can.bind("<Button1-Motion>",self.mouseMove)
can.bind("<Destroy>",self.Destroy)
self.m_quit = False
self.m_thread = Thread_cible(can,cible,valCible,self)
self.m_thread.start()
def Destroy(self,event):
print 'QUITTING'
self.m_quit = True
self.m_thread.join()
def mouseMove(self,event):
# global x2,y2
x2,y2=event.x,event.y
can.coords(ligneh,x2-30,y2,x2+30,y2)
can.coords(lignev,x2,y2+30,x2,y2-30)
valViseur.configure(text=str(x2)+"/"+str(y2))
if __name__=="__main__":
App().mainloop()
wrote:En essayant de tenir compte de toutes vos remarques,
voici le code modifié et qui semble fonctionner.
Je reste preneur de tous vos commentaires pour progresser.
Merci
# -*- coding: cp1252 -*-
from Tkinter import *
from math import *
import os
import wx
import time,threading
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur):
threading.Thread.__init__(self)
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while 1:
t=t+0.005
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.001)
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("ADI Version 2006")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
def mouseMove(event):
global x2,y2
x2,y2=event.x,event.y
can.coords(ligneh,x2-30,y2,x2+30,y2)
can.coords(lignev,x2,y2+30,x2,y2-30)
valViseur.configure(text=str(x2)+"/"+str(y2))
#Recepteur d'evenements (souris)
can.bind("<Button1-Motion>",mouseMove)
Thread_cible(can,cible,valCible).start()
if __name__=="__main__":
App().mainloop()
Tu remarque que ton application tourne toujours après la fermeture de la
fenêtre:
# -*- coding: cp1252 -*-
from Tkinter import *
from math import *
import os
import wx
import time,threading
class Thread_cible(threading.Thread):
def __init__(self,canevas,dessin,valeur, p_parent):
threading.Thread.__init__(self)
self.m_parent = p_parent
self.can,self.dessin,self.valCibleÊnevas,dessin,valeur
def run(self):
t=0.0
while False == self.m_parent.m_quit:
t=t+0.005
xa(0*sin(t)/(1+cos(t)**2)
yae0*sin(t)*cos(t)/(1+cos(t)**2)
x=int(ya+300)
y=int(xa+300)
self.can.coords(self.dessin,x-4,y-4,x+4,y+4)
self.valCible.configure(text="cible:"+str(x)+"/"+str(y))
time.sleep(0.001)
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry('1024x768+0+0')
self.title("ADI Version 2006")
canÊnvas(self,width`0,height`0,bg='ivory')
can.grid(row=1,column=2)
cibleÊn.create_oval(0,0,0,0,fill='blue')
lignehÊn.create_line(270,300,330,300,width=3)
lignevÊn.create_line(300,270,300,330,width=3)
valCible=Label(self,text="")
valCible.grid(row=3,column=2)
valViseur=Label(self,text="0/100")
valViseur.grid(row=4,column=2)
#Recepteur d'evenements (souris)
can.bind("<Button1-Motion>",self.mouseMove)
can.bind("<Destroy>",self.Destroy)
self.m_quit = False
self.m_thread = Thread_cible(can,cible,valCible,self)
self.m_thread.start()
def Destroy(self,event):
print 'QUITTING'
self.m_quit = True
self.m_thread.join()
def mouseMove(self,event):
# global x2,y2
x2,y2=event.x,event.y
can.coords(ligneh,x2-30,y2,x2+30,y2)
can.coords(lignev,x2,y2+30,x2,y2-30)
valViseur.configure(text=str(x2)+"/"+str(y2))
if __name__=="__main__":
App().mainloop()
Merci beaucoup pour cette "astuce" que je vais m'efforcer
de comprendre...
Merci beaucoup pour cette "astuce" que je vais m'efforcer
de comprendre...
Merci beaucoup pour cette "astuce" que je vais m'efforcer
de comprendre...