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 :

Comment insérer un ComboBox dans une fenetre existante?


Sujet :

Tkinter Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut Comment insérer un ComboBox dans une fenetre existante?
    Bonjour à tous

    J'aimerais insérer un widget ComboBox(de tix ou pmw) dans une fenetre ou il y a deja d'autres widgets, mais je n'y arrive pas. Pourtant je n'ai aucune difficulté pour le faire dans une nouvelle fenetre, à part du reste.

    Par excemple, ce code fonctionne bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import Tix 
     
    def Affiche(evt):
        print varcombo.get() ## On affiche a l'ecran la valeur selectionnee
     
    root = Tix.Tk() 
    varcombo = Tix.StringVar() 
    combo = Tix.ComboBox(root, editable=1, dropdown=1, variable=varcombo, command = Affiche)
    combo.entry.config(state='readonly')  ## met la zone de texte en lecture seule
    combo.insert(0, 'NT') 
    combo.insert(1, 'Linux')
    combo.pack()
    root.mainloop()
    Mais ce code ne fonctionne pas:

    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
    import Tix
     
    def affiche(event):
        print self.default_extension.get()
     
    def settings(self):
        self.root=Tk()
        self.root.title('Paramètres')
     
        #implementation des autre widgets
     
        Label(self.root,text='Extension des images:').grid(row=2,column=0,sticky=E)
        self.default_extension=Tix.StringVar()
        #self.default_extension.set(self.dico_sett["extension"])
        combo=Tix.ComboBox(self.root,editable=1,dropdown=1, variable=self.default_extension, command=self.affiche)
        combo.entry.config(state='readonly')
        combo.insert(0, 'jpg')
        combo.insert(1, 'png')
        combo.insert(2, 'bmp')
        combo.grid(row=2,column=0,columnspan=2,padx=3,pady=3)
        combo.grid(row=2,column=0,columnspan=2,padx=3,pady=3)
    le message d'erreur est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
        return self.func(*args)
      File "C:\Python26\folder\gen.py", line 612, in settings
        combo=Tix.ComboBox(self.root,editable=1,dropdown=1, variable=self.default_extension, command=self.affiche)
      File "C:\Python26\lib\lib-tk\Tix.py", line 579, in __init__
        cnf, kw)
      File "C:\Python26\lib\lib-tk\Tix.py", line 307, in __init__
        self.tk.call(widgetName, self._w, *extra)
    TclError: invalid command name "tixComboBox"
    Franchement je ne vois pas pourquoi il ne reconnaît pas Tix.ComboBox dans le deuxième exemple, pour moi c'est la même chose que ce soi dans une fenêtre à part ou dans une fenêtre existante :s

    Pouvez-vous éclairer ma lanterne?

    Merci d'avance

  2. #2
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Bonjour voici code qui marche.

    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
     
    # -*- coding: utf-8 -*-
    from Tix import *
    # from Tkinter import Tk
     
    class App( Tk ):
        def __init__( self ):
            Tk.__init__( self )
     
        def affiche( self, event):
            print self.default_extension.get()
     
        def settings(self):
            self.title('Paramètres')
     
            #implementation des autre widgets
     
            Label( self, text='Extension des images:').grid(row=2,column=0,sticky=E)
            self.default_extension= StringVar()
            #self.default_extension.set(self.dico_sett["extension"])
            combo=ComboBox(  self, editable=1,dropdown=1, variable=self.default_extension, command=self.affiche)
            combo.entry.config(state='readonly')
            combo.insert(0, 'jpg')
            combo.insert(1, 'png')
            combo.insert(2, 'bmp')
            combo.grid(row=2,column=0,columnspan=2,padx=3,pady=3)
            combo.grid(row=2,column=0,columnspan=2,padx=3,pady=3)
     
     
     
    app = App()
    app.settings()
    app.mainloop()
    Je n'ai pas tous ton code, mais je pense que tu essais de fixer un widget Tix

    dans une fenêtre Tkinter. Tu peux tester d'enlever le commentaire
    # from Tkinter import Tk
    sur mon code, tu verras que ça ne marche plus. Sinon il manque un "self" à la ligne

    def affiche( self, event):

Discussions similaires

  1. Comment insérer des images dans une ComboBox HTML ?
    Par UiYuki dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/08/2010, 15h35
  2. JTable : comment insérer un bouton dans une cellule ?
    Par donyas dans le forum Composants
    Réponses: 2
    Dernier message: 08/08/2006, 15h54
  3. Réponses: 13
    Dernier message: 09/03/2006, 18h17
  4. Comment insérer un ComboBox dans un cellule StringGrid
    Par Xavier dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/01/2006, 11h36
  5. 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, 14h48

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