crapette2 | Bonjour,
lorsque je compile mon programme de tracé de trochoides, j'obtiens cette erreur:
File "C:\Users\Chris\Desktop\spiro2.py", line 95, in fonction
color = cb_color()
NameError: global name 'cb_color' is not defined
et je ne comprends pas du tout pourquoi cb_color n'est pas (ou mal) défini. c'est surement une erreur assez bête mais je n'arrive pas à la trouver, si vous pouviez m'aider ce serait très sympa.
Merci d'avance
Code :
- # ==============================================================================
- # Tracé de Trochoïdes
- # ==============================================================================
- """Tracé de trochoïdes"""
- __author__ = "Gaëlle Conte"
- __version__ = "1.0"
- __date__ = "mai 2010"
- # ------------------------------------------------------------------------------
- from Tkinter import *
- from tkFont import Font
- import math
- import tkColorChooser
- #-------------------------------------------------------------------------------
- class debut():
- """crée l'affichage du jeu"""
- def __init__(self):
- self.root
-
- global root
- root = {0: Tk()}
- # ----------------------------------------------------------------------------
- root[1] = Frame(root[0])
- root[1].pack(side=TOP, fill=BOTH)
- root[11] = Frame(root[1])
- root[11].pack(side=LEFT, fill=BOTH)
- root[12] = Canvas(root[1], bg='white',width=500, height=500, relief=SOLID, border=3)
- root[12].pack(side=LEFT, fill=BOTH, expand=YES)
- # ------------------------------------------------------------------------------
- class choix_util():
- def __init__(self,x,y):
- self.x = x
- self.y = y
- root[111]= Frame(root[11])
- root[111].pack(side=TOP, fill=BOTH,pady=5)
- root[1111]=Frame(root[111])
- root[1111].pack(side=LEFT,fill=BOTH,pady=5)
- root[11111]=Label(root[1111],text='position de x')
- root[11111].pack(side=TOP, fill=BOTH,pady=5)
- root[11112] = Scale(root[1111], orient=HORIZONTAL, to=400)
- root[11112].pack(side=TOP, fill=BOTH, expand=YES)
- root[1112]=Frame(root[111])
- root[1112].pack(side=LEFT,fill=BOTH,pady=5)
- root[11121]=Label(root[1112],text='position de y')
- root[11121].pack(side=TOP, fill=BOTH,pady=5)
- root[11122] = Scale(root[1112], orient=HORIZONTAL, to=400)
- root[11122].pack(side=TOP, fill=BOTH, expand=YES)
- # ----------------------------------------------------------------------------
- root[112] = Label(root[11], text='rayon de cercle fixe (1-100)')
- root[112].pack(side=TOP, fill=BOTH,pady=5)
- root[113] = Scale(root[11], orient=HORIZONTAL,from_=1, to=100)
- root[113].pack(side=TOP, fill=BOTH, expand=YES)
- root[114] = Label(root[11], text='deplacement du rayon du cercle (1-100)')
- root[114].pack(side=TOP, fill=BOTH)
- root[115] = Scale(root[11], orient=HORIZONTAL, from_=1, to=100)
- root[115].pack(side=TOP, fill=BOTH, expand=YES)
- root[116] = Label(root[11], text='deplacement de compensation du cercle (1-100)')
- root[116].pack(side=TOP, fill=BOTH)
- root[117] = Scale(root[11], orient=HORIZONTAL, from_=1, to=100)
- root[117].pack(side=TOP, fill=BOTH, expand=YES)
- x = root[11112].get()
- y = root[11122].get()
- # ------------------------------------------------------------------------------
- class spiro():
- """Zone de dessin"""
- global color
-
- # ----------------------------------------------------------------------------
- def __init__(self,x,y):
- self.pos_x = choix_util(x)
- self.pos_y = choix_util(y)
- # ------------------------------------------------------------------------------
- def cb_color(self, val=None):
- """permet à l'utilisateur de choisir la couleur de la courbe"""
- val=tkColorChooser.askcolor()
- return val
-
- # ----------------------------------------------------------------------------
- def fonction(self, pos=None):
- """ """
- #a = spiro(x)
- #b = spiro(y)
- x = root[11112].get()
- y = root[11122].get()
- color = cb_color()
-
- R, r, O = root[113].get(), root[115].get(), root[117].get()
- if pos is None:
- coords=[]
- for t in range(500):
- coords.append((R+r)*math.cos(t)-O*math.cos(((R+r)/r)*t)+x)
- coords.append((R+r)*math.sin(t)-O*math.sin(((R+r)/r)*t)+y)
- outside_curve=root[11].create_line(coords,fill=color,tag='line',activedash=(2,2))
-
- else:
- coords=[]
- for t in range(500):
- coords.append((R-r)*math.cos(t)+O*math.cos(((R-r)/r)*t)+self.pos_x)
- coords.append((R-r)*math.sin(t)-O*math.sin(((R-r)/r)*t)+self.pos_y)
- inside_curve=root[11].create_line(coords,fill=color,tag='line',activedash=(2,2))
-
- # ------------------------------------------------------------------------------
- def cb_delete():
- """supprime tous les dessins dans la fenetre"""
- root[11].delete(root[11],'line')
- root[118] = Frame(root[11])
- root[118].pack(side=TOP,fill=BOTH,expand=YES)
- root[1181] = Button(root[118], text='déplacement intérieur',command = fonction(True))
- root[1181].pack(side=LEFT, fill=BOTH, expand=YES,pady=5,padx=5)
- root[1182] = Button(root[118], text='déplacement extérieur',command = fonction(False))
- root[1182].pack(side=LEFT, fill=BOTH, expand=YES,pady=5,padx=5)
- root[119] = Button(root[11], text= 'effacer', command=cb_delete)
- root[119].pack(side=TOP, fill=BOTH,padx=5,pady=2)
-
- # ==============================================================================
- if __name__ == '__main__': # testcode de la classe spiro
- # ----------------------------------------------------------------------------
- root=debut()
- root.title('Trace de Trochoides')
- root.protocol('WM_DELETE_WINDOW', root.quit)
- root.minsize(root.winfo_width(), root.winfo_height())
- root.resizable(1,1)
- root.mainloop(); root.destroy()
- # ==============================================================================
|
|