IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

[Tix] HList


Sujet :

Tkinter Python

  1. #1
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Points : 1 351
    Points
    1 351
    Par défaut [Tix] HList
    Salut,

    Le code ci-dessous crée un arbre, nais je bute sur la documentation de HList... Bien que j'utilise les fonctions add() et add_child() de hlist, je ne sais pas comment pointer l'objet qui est créé... Donc je n'arrive pas à le détruire, lui mettre des binds, etc... En fait, la ligne retval = tree.hlist.add(...) retourne une chaine représentant le nom de l'objet, mais pas l'objet... Quelqu'un saurait comment accéder à l'objet? Ou un lien vers une "vraie" doc de Tix, je n'ai que ce qui est accessible sous pydoc. Merci d'avance.
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    import Tix as tk
     
    def AddChild(label,parent = None):
        global tree,img,name_dicco
        if label in names_dicco.keys():
            return 0
        if parent == None:
            #no parent, root level
            _name = tree.hlist.add(label,text = label)
        else:
            #there is a parent, let's do a child
            _name = tree.hlist.add_child(parent = names_dicco[parent],text = label)
        names_dicco[label] = _name
        return 1
     
    root = tk.Tk()
    root.geometry("+50+50")
    tree   = tk.Tree(root,width = 640,height = 480)
    tree.grid()
    img = tree.tk.call('tix', 'getimage', 'file')
     
    names_dicco = {}
     
    for idx in range(1,11):
        label = "DynamicPage%02u"%(idx)
        AddChild(label)
     
    AddChild("MainMenu")
    AddChild("Parameters","MainMenu")
    AddChild("Display","Parameters")
    AddChild("Line 1","Display")
    AddChild("L1ProcVar","Line 1")
    AddChild("L1FavUnit","Line 1")
    AddChild("L1Filter","Line 1")
    AddChild("Line 2","Display")
    AddChild("L2ProcVar","Line 2")
    AddChild("L2FavUnit","Line 2")
    AddChild("L2Filter","Line 2")
     
    AddChild("Calibration","MainMenu")
    AddChild("CalPoint1","Calibration")
    AddChild("CalPoint2","Calibration")
    AddChild("CalSave","Calibration")
     
    AddChild("Test","MainMenu")
     
    tree.mainloop()
    A+

    pfeuh

  2. #2
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Je commence à entrevoir la philosophie des arbres sous Tix. Il m'a fallu plusieurs jours pour y arriver. Je constate avec amertume que la connaissance ne se partage pas si facilement que ça... Je poste bien sûr le code, car j'ai l'esprit communautaire, moi. Le double click sur un objet provoque l'apparition d'une fenêtre.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    import Tix as tk
    from tkMessageBox import showerror,askyesno,showinfo
     
    def Hook(event):
        """ called by double clik on item"""
        global tree #I haven't found yet an other way...
        showinfo("DEBUG","%s"%(GetLabelByName(tree,event)))
     
    def Refresh(tree):
        """ adjust mode when status parent - child changes"""
        for name in tree.names_dicco.values():
            _oldmode = tree.getmode(name)
            if len(tree.hlist.info_children(name)):
                if _oldmode != "none":
                    tree.setmode(name,_oldmode)
                else:
                    tree.setmode(name,"close")
            else:
                tree.setmode(name,"none")
     
    def AddChild(tree,label,parent = None):
        """ add a branch on the tree"""
        if label in tree.names_dicco.keys():
            return 0
        if parent == None:
            #no parent, root level
            _name = tree.hlist.add(label,text = label)
        else:
            #there is a parent, let's do a child
            _name = tree.hlist.add_child(parent = tree.names_dicco[parent],text = label)
        tree.names_dicco[label] = _name
        Refresh(tree)
        return 1
     
    def GetLabelByName(tree,label):
        for _key in tree.names_dicco.keys():
            if tree.names_dicco[_key] == label:
                return _key
        return None
     
    if __name__ == "__main__":
     
        root = tk.Tk()
        root.geometry("+50+50")
        tree   = tk.Tree(root,width = 640,height = 480,command = Hook)
        tree.hlist.configure(selectmode = "browse")
        tree.names_dicco = {}
        tree.grid()
        # tree creation
        for idx in range(1,11):
            label = "DynamicPage%02u"%(idx)
            AddChild(tree,label)
        AddChild(tree,"MainMenu")
        AddChild(tree,"Parameters","MainMenu")
        AddChild(tree,"Display","Parameters")
        AddChild(tree,"Line 1","Display")
        AddChild(tree,"L1ProcVar","Line 1")
        AddChild(tree,"L1FavUnit","Line 1")
        AddChild(tree,"L1Filter","Line 1")
        AddChild(tree,"Line 2","Display")
        AddChild(tree,"L2ProcVar","Line 2")
        AddChild(tree,"L2FavUnit","Line 2")
        AddChild(tree,"L2Filter","Line 2")
        AddChild(tree,"Calibration","MainMenu")
        AddChild(tree,"CalPoint1","Calibration")
        AddChild(tree,"CalPoint2","Calibration")
        AddChild(tree,"CalSave","Calibration")
        AddChild(tree,"Test","MainMenu")
     
        tree.mainloop()
    A+

    Pfeuh

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 129
    Points : 160
    Points
    160
    Par défaut
    de la doc sur tix : http://tix.sourceforge.net/
    la partie turotials est plutot bien faite

    Je ne comprend pas le prbleme, ton code a l'aire de bine fonctionner

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tix] Menu contextuel sur un Canvas.
    Par airod dans le forum Tkinter
    Réponses: 2
    Dernier message: 02/10/2007, 14h03
  2. [Tix] compil avec py2exe
    Par airod dans le forum Py2exe
    Réponses: 4
    Dernier message: 17/01/2007, 23h39
  3. couleur d'une fenêtre Tix
    Par Chris33 dans le forum Tkinter
    Réponses: 2
    Dernier message: 15/11/2006, 12h43
  4. [Tkinter - Tix] Maximize
    Par airod dans le forum Tkinter
    Réponses: 4
    Dernier message: 26/08/2006, 12h12
  5. [Tix] changer la page visualisée d'un notebook
    Par Guigui_ dans le forum Tkinter
    Réponses: 2
    Dernier message: 24/01/2006, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo