Bonjour,
je cherche depuis un petit moment comment modifier les propriétés d'objets qui ont été créés en dehors de la fonction en cours.

Dans l'exemple suivant suivant (tiré de "Penser en Tkinter"), tout se déroule au niveau de la class MyApp et la "fonction locale" button1Click peut sans problème faire référence à self.button1 pour en changer les propriétés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
from Tkinter import *
 
class MyApp:
	def __init__(self, parent):
		self.myParent = parent   
		self.myContainer1 = Frame(parent)
		self.myContainer1.pack()
 
		self.button1 = Button(self.myContainer1, command=self.button1Click) ### (1)
		self.button1.configure(text="OK", background= "green")
		self.button1.pack(side=LEFT)
		self.button1.focus_force()         
 
 
		self.button2 = Button(self.myContainer1, command=self.button2Click)  ### (2)
		self.button2.configure(text="Cancel", background="red")   	
		self.button2.pack(side=RIGHT)
 
 
	def button1Click(self):  ### (3)
		print "button1Click event handler" 
		if self.button1["background"] == "green":  
			self.button1["background"] = "yellow"
		else:
			self.button1["background"] = "green"
 
	def button2Click(self): ### (4)
		print "button2Click event handler" 
		self.myParent.destroy()      
 
 
 
root = Tk()
myapp = MyApp(root)
root.mainloop()
Mais comment modifier les propriétés d'un widget à partir d'une fonction qui n'est pas définie au même niveau (fonction externe à MyApp) ?
en d'autres termes, est-ce qu'il est possible de mettre l'équivalent de la fonction interne button1Click à l'extérieur de la class MyApp ?