1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
#! /usr/bin/env python
# -*- coding: Utf-8 -*-
from Tkinter import *
class DessinCercle(Canvas):
"Canevas dans lequel sera dessiné le cercle"
def __init__(self,larg=300,haut=300,coul='white'):
Canvas.__init__(self)
self.configure(width=larg,height=haut,bg=coul)
self.larg,self.haut=larg,haut
self.x,self.y=larg/2,haut/2
def traceCercle(self,r=5):
"dessin d'un cercle de rayon <r> en <x,y> dans le canevas"
# self.create_oval(self.x-r, self.y-r, self.x+r, self.y+r,outline='black')
return self.create_oval(self.x-r, self.y-r, self.x+r, self.y+r,outline='black')
class CurseurCercle(Scale):
"Curseur faisant varier le rayon d'un cercle"
def __init__(self):
Scale.__init__(self)
self.configure(length=200, orient=HORIZONTAL, sliderlength =25,
label ='Rayon :', from_=5, to=151, tickinterval =25,
resolution =1,
showvalue =1, command = self.setRayon)
self.rayon=5
def setRayon(self,rayon):
"Communiquer le nouveau rayon à d'autres widgets"
self.rayon=int(rayon)
self.event_generate('<Control-Z>')
def valeurRayon(self):
"Renvoie le rayon du cercle"
return self.rayon
class WidgetCercle(Frame):
"Widget principal contenant le canevas et son cercle ainsi que le curseur faisant varier son rayon"
def __init__(self):
Frame.__init__(self)
self.can1=DessinCercle(larg=300,haut=300,coul='white')
self.cercle1=self.can1.traceCercle(r=5)
self.can1.pack()
self.curseur1=CurseurCercle()
self.master.bind('<Control-Z>',self.montreCercle)
self.master.title("Dessin d'un cercle")
self.curseur1.pack()
def montreCercle(self,event):
"Efface l'ancien cercle dans le canevas et le remplace par le nouveau de même centre mais de rayon différent"
self.can1.delete(self.cercle1)
self.cercle1=self.can1.traceCercle(r=self.curseur1.valeurRayon())
if __name__=='__main__':
#script principal
fen1=Tk()
a=WidgetCercle()
a.pack()
fen1.mainloop() |
Partager