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

GUI Python Discussion :

[tix] widget Checklist


Sujet :

GUI Python

  1. #1
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    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 : 946
    Points : 1 351
    Points
    1 351
    Par défaut [tix] widget Checklist
    Salut,

    Malgré l'absence de doc adaptée aux développeurs python, je pense avoir compris comment marche ce widget. Par contre pour le passage de paramètres aux différentes enfants, c'est le flou total... Quelqu'un saurait par exemple comment changer la couleur globale du checklist ou mieux, de ses différents enfants?

    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
    import Tix as tix
    win = tix.Tk()
    import sys
     
    def printSelected(tree):
        # pour la recursivite, on verra plus tard!
        for item in tree.hlist.info_children():
            sys.stdout.write("%s:%s\n"%(item, tree.getstatus(item)))
            for subitem in tree.hlist.info_children(item):
                sys.stdout.write("%s:%s\n"%(subitem.split('.')[-1], tree.getstatus(subitem)))
     
    tree = tix.CheckList(win)
    tree.grid()
    for section in ['Attributes', 'Attributes.Read', 'Attributes.Write', 'Attributes.Exec', 'Crc', 'utf-8', 'Interrupt']:
        tree.hlist.add(section, itemtype=tix.IMAGETEXT, text=section.split('.')[-1])
        tree.setstatus(section, "on")
        tree.open(section)
    tree.autosetmode()
    tix.Button(win, text='???', command=lambda:printSelected(tree)).grid()
    win.mainloop()
    A+

    Pfeuh

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 784
    Points : 7 043
    Points
    7 043
    Par défaut
    Il semblerait que les options soient les mêmes quelque-soit le widget, mais ne connaissant pas je vous laisse vérifier.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tree.hlist.config(bg='red', fg='blue', selectbackground='blue', selectforeground='red')
    De mémoire il supporte les options du Widget Frame.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    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 : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Citation Envoyé par PauseKawa Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tree.hlist.config(bg='red', fg='blue', selectbackground='blue', selectforeground='red')
    Oui, c'est bien ce que je cherchais, merci beaucoup. Ce qui me gène, en fait, c'est que l'utilisation est quand même différente de Tkinter où j'aurais directement pu les passer en paramètres à la création du widget. Là, il faut utiliser la méthode config, que je découvre.

    A+

    Pfeuh

  5. #5
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 784
    Points : 7 043
    Points
    7 043
    Par défaut
    La méthode config est déjà existante avec tkinter...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 239
    Points : 36 692
    Points
    36 692
    Par défaut
    Salut,

    Citation Envoyé par fred1599 Voir le message
    La méthode config est déjà existante avec tkinter...
    La surprise avec Tix, c'est la construction d'une composition de widgets.
    Tk, librairie graphique n'adresse pas ce sujet et ne propose que le basique: partir d'une Frame et insérer les subwidgets dedans.

    De fait, suivant la fonction du widget on pourrait configurer "globalement" et appliquer les items de configurations aux différents subwidgets, avoir des configurations spécifiques à chaque subwidget, effectuer un mix des deux.

    Pour comprendre, il faut arriver à lire la documentation TCL de Tix et les sources de l'interface Python pour voir comment cela a été mis en œuvre.
    Rien de très compliqué mais parfois décourageant.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    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 : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    La méthode config est déjà existante avec tkinter...
    Certes, mais pour le moins redondante... Comme il existe au moins 3 ou 4 façons différentes d'accéder aux attributs, j'ai ignoré config jusqu'à présent.

    Citation Envoyé par wiztricks Voir le message
    Rien de très compliqué mais parfois décourageant.
    Tout à fait, décourageant, c'est le mot.

    Une autre chose de vraiment décourageante, c'est de me rendre compte qu'une fenêtre modale Tix, bien qu'isolée dans un script à part ne se mélange pas avec des objets Tkinter. Tant que j'appelle du standard, comme un Toplevel ou un Button, pas de problème, mais dès que j'appelle du spécifique Tix comme le CheckList, Tkinter qui était là en premier me pète une exception. Tkinter est pour moi inévitable puisque présent dans les bibliothèques d'import que j'utilise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     self.tk.call(widgetName, self._w, *extra)
    TclError: invalid command name "tixCheckList"

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 239
    Points : 36 692
    Points
    36 692
    Par défaut
    Salut,

    Tkinter qui était là en premier me pète une exception. Tkinter est pour moi inévitable puisque présent dans les bibliothèques d'import que j'utilise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     self.tk.call(widgetName, self._w, *extra)
    TclError: invalid command name "tixCheckList"
    Je n'ai peut être pas tout compris mais...
    Pour que les widgets Tix soit définis (dans l'interpréteur Tk qui se cache dérrière tk.call) il faut initialiser le Tk de Tix et pas celui de Tk.
    En code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import Tkinter as tk
    import Tix as Tix
    root = tix.Tk() #et pas tk.Tk())
    Mais peut être c'est ce que vous faites déjà (et je n'ai pas compris la question)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    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 : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Mais peut être c'est ce que vous faites déjà
    Non, je ne le faisais pas, merci du tuyau, je comprends la logique de la chose. Donc je viens de le faire, en insérant les 2 lignes suivantes tout au début du script principal avant les imports:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import Tix as temptix
    win = temptix.Tk()
    Maintenant l'erreur claque sur sur la création d'un LabelFrame.

    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
      File "canOpen_configurator.py", line 157, in <module>
        spylog = canOpen.gui.CO_SPY_LOG(win)
      File "c:\python27\lib\site-packages\canOpen\gui.py", line 533, in __init__
        CO_LOG.__init__(self, container, None, 'Raw messages', **kwds)
      File "c:\python27\lib\site-packages\canOpen\gui.py", line 383, in __init__
        tk.LabelFrame.__init__(self, container, text=text, padx=5, pady=5)
      File "c:\python27\lib\lib-tk\Tix.py", line 1102, in __init__
        ['labelside','options'], cnf, kw)
      File "c:\python27\lib\lib-tk\Tix.py", line 326, in __init__
        Widget.config(self, cnf)
      File "c:\python27\lib\lib-tk\Tkinter.py", line 1202, in configure
        return self._configure('configure', cnf, kw)
      File "c:\python27\lib\lib-tk\Tkinter.py", line 1193, in _configure
        self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
    _tkinter.TclError: unknown option "-text"

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 239
    Points : 36 692
    Points
    36 692
    Par défaut
    Hum, ca ne devrait pas être comme çà!

    La classe LabelFrame étant dans Tkinter et dans Tix, il faut préciser laquelle on veut. Dans la trace que vous fournissez, je ne comprends pas comment l'appel a tk.LabelFrame passe dans le tix.LabelFrame.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      File "c:\python27\lib\site-packages\canOpen\gui.py", line 383, in __init__
        tk.LabelFrame.__init__(self, container, text=text, padx=5, pady=5)
      File "c:\python27\lib\lib-tk\Tix.py", line 1102, in __init__
        ['labelside','options'], cnf, kw)
      File "c:\python27\lib\lib-tk\Tix.py", line 326, in __init__
        Widget.config(self, cnf)
    C'est comme si la variable locale tk dans le module gui.py pointait sur le module Tix au lieu de Tkinter.
    Si vous faites le test "basique":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> import Tkinter as tk
    >>> import Tix as tix
    >>> root = tix.Tk()
    >>> w = tk.LabelFrame(root, text='foo')
    >>> w.pack()
    Ca ne passe pas dans tix.LabelFrame (encore heureux) et "text" est bien accepté par le LabelFrame Tk.

    Comment, à quoi est assignée tk dans le module gui.py?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    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 : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Comment, à quoi est assignée tk dans le module gui.py?
    Euh... Je ne peux pas répondre car j'ai fait quelques modifications entre temps, en désespoir de cause Mais il y a fort à parier que c'était Tix. En tout cas merci, j'ai eu le déclic au sujet du mélange Tkinter/Tix. Ça semble cohabiter désormais sans réels problèmes.

    Il ne me reste plus que quelques histoires de fenêtres modales à résoudre. J'ai une fenêtre principale, Tix.Tk() et un nombre variable de fenêtres Toplevel, une par périphérique, les périphériques s'ajoutant et s'enlevant par l'utilisateur. On doit pouvoir à tout moment ajouter ou supprimer des objets dans les fenêtres des périphériques, d'où le Tix.CheckList en modal déclenché par un Toplevel.

    Mais à la sortie, les fenêtres sont totalement désorganisées, il y en a qui sont passées derrière toutes les autres, d'autres qui se retrouvent au premier plan , etc... Pire, La fenêtre qui est sensée être modale se retrouve derrière les autres... J'ai cru comprendre qu'il y avait une histoire de parent différent du container, bref, je vais investiguer de ce côté là. Encore merci pour tout.

    A+

    Pfeuh

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 239
    Points : 36 692
    Points
    36 692
    Par défaut
    Salut,

    Une Toplevel n'est pas "modale" même si elle apparaît généralement "au dessus", par défaut. La FAQ Tk donne quelques indications pour faire çà.

    Avec plusieurs Toplevel, il va y avoir des chevauchements et certaines opérations pourront demander de redessiner toute la hiérarchie.
    Normalement, çà se redessine au bon endroit mais l'empilement suit l'ordre (z-order) de création des Toplevel même si l'utilisateur a changé ce "stacking" (ce qu'il voit à l'écran) suite à des clicks _dans_ les Toplevels.
    Les clicks donnent le focus et le focus "pousse" la Toplevel au dessus mais ne change pas le z-order: il faudrait faire un .raise.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    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 : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Dès que j'ai un moment, je code un script minimaliste de ce que je voudrais faire, je crois que ce sera le plus clair.

    A+

    Pfeuh

  14. #14
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    A partir du moment que vous connaissez .config(), et donc les options d'un Widget(subwidget), rien ne vous empêche de vous amuser.

    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
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #
    #
    import Tix as tix
     
     
    class ColorCheckList(tix.CheckList):
        coloroptions = ('highlightthickness', 'background', 'highlightcolor',
                        'selectbackground', 'foreground', 'bg', 'fg',
                        'highlightbackground', 'selectforeground')
     
        def __init__(self, master=None, cnf={}, **kw):
            # dict() > PO en Python 2.x.
            swoptions = dict([(k, kw.pop(k)) for k in kw.keys()
                              if k in self.coloroptions])
            tix.CheckList.__init__(self, master, kw)
            # Je ne refais pas le coup de swoptions... Délibérément explicite au possible.
            for w in self.subwidget_list.values():
                for k in swoptions.keys():
                    if k in w.config():
                         w[k] = swoptions[k]
     
     
    win = tix.Tk()
    tree = ColorCheckList(win, bg='red', fg='blue', selectbackground='blue', selectforeground='red')
    tree.grid()
    for section in ['Attributes', 'Attributes.Read', 'Attributes.Write', 'Attributes.Exec', 'Crc', 'utf-8', 'Interrupt']:
        tree.hlist.add(section, text=section.split('.')[-1])
        tree.setstatus(section, "on")
        tree.open(section)
    win.mainloop()
    @+
    Merci d'utiliser le forum pour les questions techniques.

  15. #15
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    'highlightthickness' Vive le cut/paste...

    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
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #
    #
    import Tix as tix
     
     
    class ColorCheckList(tix.CheckList):
        def __init__(self, master=None, cnf={}, **kw):
            coloroptions = ('background', 'highlightcolor', 'bg',
                            'highlightbackground', 'selectbackground',
                            'foreground', 'fg', 'selectforeground')
            swoptions = {}
            for k in kw.keys():
                if k in coloroptions:
                    swoptions[k] = kw[k]
                    if k in coloroptions[4:]:
                        kw.pop(k)
            tix.CheckList.__init__(self, master, kw)
            for w in self.subwidget_list.values():
                for k in swoptions.keys():
                    if k in w.config():
                         w[k] = swoptions[k]
     
     
    win = tix.Tk()
    tree = ColorCheckList(win, bg='red', fg='blue', selectbackground='blue', selectforeground='red')
    tree.grid()
    for section in ['Attributes', 'Attributes.Read', 'Attributes.Write', 'Attributes.Exec', 'Crc', 'utf-8', 'Interrupt']:
        tree.hlist.add(section, text=section.split('.')[-1])
        tree.setstatus(section, "on")
        tree.open(section)
    win.mainloop()
    Merci d'utiliser le forum pour les questions techniques.

  16. #16
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    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 : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Voici le code minimaliste. En l'écrivant, j'ai compris quelques erreurs et j'ai donc corrigé, mais il doit en rester pas mal sur la gestion des fenêtres. Au lancement de l'application tout va bien, la fenêtre principale a le focus et elle est au dessus des autres, mais après, ça devient le Bronx...

    A+

    Pfeuh
    Fichiers attachés Fichiers attachés

  17. #17
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 239
    Points : 36 692
    Points
    36 692
    Par défaut
    Salut,

    Citation Envoyé par pfeuh Voir le message
    Voici le code minimaliste. En l'écrivant, j'ai compris quelques erreurs et j'ai donc corrigé, mais il doit en rester pas mal sur la gestion des fenêtres. Au lancement de l'application tout va bien, la fenêtre principale a le focus et elle est au dessus des autres, mais après, ça devient le Bronx...
    Est ce que vous voulez que la fenêtre principale reste toujours au-dessus?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  18. #18
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    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 : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Est ce que vous voulez que la fenêtre principale reste toujours au-dessus?
    Il faudrait définir "toujours", je pense que là, non, je détaille:

    Rajouter une fenêtre se fait par le bouton "ADD WINDOW" de la fenêtre principale. Dans ce cas, oui, il faudrait qu'après le rajout la fenêtre principale soit au dessus et ait le focus.

    Mais quand on change la liste des objets affichés d'une fenêtre "toto", on le fait à partir du bouton "SELECT OBJECTS" de la fenêtre "toto", donc après la sélection c'est "toto" qui devrait être au dessus et avoir le focus. Ça par contre, ça a l'air de se passer bien. Là je répondrai non, la fenêtre principale ne devrait ni être au dessus des autres ni avoir le focus puisque ce serait le rôle de "toto".

  19. #19
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 239
    Points : 36 692
    Points
    36 692
    Par défaut
    Salut,

    Rajouter une fenêtre se fait par le bouton "ADD WINDOW" de la fenêtre principale. Dans ce cas, oui, il faudrait qu'après le rajout la fenêtre principale soit au dessus et ait le focus.
    Pourquoi ne pas le coder cela dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def addWindow(win, fname, wins):
        config = ConfigParser.ConfigParser()
        config.read(fname)
        w = gui.WINDOW(win, config, None, fname, width=480, height=300)
        wins.append(w)
        win.deiconify()
        win.tkraise(w)
        win.focus_set()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  20. #20
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    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 : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Pourquoi ne pas le coder cela dans:
    Parce que je ne connaissais pas... Ça fait exactement ce que je cherche. Comme je n'ai pas cette culture, je m'embrouille avec tkraise, lift etc...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Swing]JTreeMap : un widget open source
    Par Jense dans le forum Composants
    Réponses: 5
    Dernier message: 25/11/2005, 19h31
  2. Positionner un WidGet dans une table
    Par sorry60 dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 05/11/2005, 20h22
  3. comment modifier les widgets dans une fenètre??
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 14/10/2005, 15h48
  4. [Tkinter] widget Text
    Par t_om84 dans le forum Tkinter
    Réponses: 8
    Dernier message: 17/06/2005, 10h30
  5. [SWT]Eclipse Java : swt.widgets.Table
    Par watson dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 01/10/2003, 10h07

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