Bonjour ,
Je bute sur deux problème concernant mon code. Le code en soit marche bien mais il y'a deux chose que je n'arrive pas a comprendre.
j'ai deux classes un classe MainApp et une MenuMap qui gère l'affichage de bouton pour MainApp. Toute mes variable son dans MainApp.
La première chose que je ne comprends pas c'est le refus d'une fonction de m'afficher un message en fin de code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 def Open_file(self): print 'fct Open_file lance : ' self.image = tkFileDialog.askopenfile(parent=self,mode='rb',title='Choose a file') self.image = Image.open(self.image) self.mapWidth, self.mapHeight =self.image.size self.can.config(scrollregion=(0,0,self.mapWidth, self.mapHeight)) #self.can.delete(ALL) #print '**fct Afficher_GRILLE lance **' self.Afficher_MAP() #print '**fct Afficher_GRILLE lance **'print '**fct Afficher_MAP termine **' refuse de se lancer et je ne comprend pas pourquoi. Je pense que ça vient de self.item.pack attributte error:'int' object has no atribute 'pack' mais je ne comprends pas l'erreur exactement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 def Afficher_MAP(self): print '**fct Afficher_MAP lance : **' photo= ImageTk.PhotoImage(self.image) self.item= self.can.create_image(0,0,anchor=NW,image=photo) self.item.pack() print '**fct Afficher_MAP termine **'
La deuxième question porte sur la façon de coder.
Dans MenuMap, j'ai instancié une case a cocher.
Pour récupérer l'etat de la case je lui est associé un variable de la classe principale mainApp affGrille. Au début j'avais mie la premièreligne dans mainApp mais si je ne le fais pas dans MenuMap ça refuse de se lancer. Y'a t'il une raison a ça? Et de la même manière, je peux tres facilement récupéré l'etat de cette variable coté MainMap, mais si je tente de le faire dans menuMap, j'obtiens se message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 # grille # parent.affGrille=IntVar(value=0) Checkbutton(self, text='grille', variable=parent.affGrille, command= self.test_Grille).grid(row=0,column=1,sticky=W)
NameError : global name 'parent' is not defined
J'ai bien essyé de faire un global qui contiendrait parent pour voir, mais le code ne se lance pas si je le fais.
je l'ai pourtant définie a l'initialisation. Quelle est la bonne manière de procéder?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 def test_Grille(self): print 'fct test_Grille lance' print 'fct test_Grille lance : '+str(parent.affGrille.get())
Pouvez m'éclairer sur ces problème s'il vous plaie, c'est pas que ça gêne mais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class MenuMap(Frame): ###### CONSTRUCTEUR def __init__(self, parent =None): Frame.__init__(self, parent)
je trouve que ça nuit a la propreté du code.
Bonne soirée ,
Partager