Finalement, j'ai placé mes widgets avec le layout "grid".
J'arrive ŕ récupérer l'instance du label cliqué avec le 'bouton 1' par l'analyse de l'event mais je n'arrive pas récupérer l'attribut 'text' (voir le message d'erreur).
???
A+, FR
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/lib-tk/Tkinter.py", line 1345, in __call__
return
self.func(*args)
File "/Users/frchalaoux/Documents/workspace/assistance/src/test.py", line 10, in bouton1
txt = setColor(event)
File "/Users/frchalaoux/Documents/workspace/assistance/src/test.py", line 43, in setColor
return event.widget.text
AttributeError: Label instance has no attribute 'text'
# -*- coding: utf-8 -*-
from Tkinter import *
def create_labels(dimi,dimj):
"" Return a list of Label instances"""
names = []
labels = []
for i in range(dimi*dimj):
name = str(i+1)
names.append(name)
for i in names:
i = Label(win,text=i,relief=RIDGE)
labels.append(i)
return labels
def bouton1(event):
""" Callback"""
print "Vous avez enfonçé sur le 'bouton 1' comme un malade "
txt = setColor(event)
#Utilise le txt pour d'autres choses
def setColor(event):
""" Change la couleur du label cliqué et retourne le text du label"""
print "Widget=%s X=%s Y=%s" %(event.widget
, event.x, event.y)
event.widget.config(bg="#888")
for attr in dir(event):
print attr, "=>", getattr(event,attr)
return event.widget.text
if __name__ == "__main__":
# Debut programme graphique
win = Tk()
dimi = 2
dimj = 2
labels = create_labels(dimi,dimj)
it = iter(labels)
for i in range(dimi):
for j in range(dimj):
l = it.next()
l.grid(row=i,column=j,sticky=NSEW)
l.config
(bg="#666")
l.bind('<Button-1>',bouton1)
win.mainloop()
Le 3 mai 06 ŕ 22:33, Alexandre Fayolle a écrit :
On Wed, May 03, 2006 at 08:06:29PM +0200, Chalaoux FR wrote:
Salut,
Je souhaite attribuer un objet ŕ chaque cellule d'un tableau d'une
widget tkinter
Cette cellule devra :
- avoir une de fond couleur
- pourvoir héberger du texte
- ętre cliquable afin de déclencher une action
Il semble qu'en stardard, il n'y ai pas grand chose dans tkinter et
pourtant je suis obligé de l'utiliser.
Tu trouveras peut-ętre ton bonheur sur
Google devrait te ramener d'autres candidats.
--
Alexandre Fayolle LOGILAB, Paris (France)