logo       

Re: Recherche Widget table pour du tkinter: msg#00020

python.french

Subject: Re: Recherche Widget table pour du tkinter

Salut,
peut-être en remplacant :
return event.widget.text
par
return event.widget['text']
dans setColor, vu que le 'text' d'un Label est une ressource du widget Tk, et non un attribut de la classe Python Label.

David


-- 
David Douard                                 LOGILAB, Paris (France)
Formations Python, Zope, Plone, Debian:  http://www.logilab.fr/formations
Développement logiciel sur mesure:       http://www.logilab.fr/services
Informatique scientifique:               http://www.logilab.fr/science


Le 26/05/06, Chalaoux FR <chalaouxfr@xxxxxxxxxx> a écrit :
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

Voir également Pmw ( http://pmw.sourceforge.net/) :


Google devrait te ramener d'autres candidats.

-- 
Alexandre Fayolle                              LOGILAB, Paris (France)
Formations Python, Zope, Plone, Debian:  http://www.logilab.fr/formations
Développement logiciel sur mesure:       http://www.logilab.fr/services
Informatique scientifique:               http://www.logilab.fr/science


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise