FAQ PythonConsultez toutes les FAQ

Nombre d'auteurs : 15, nombre de questions : 269, dernière mise à jour : 10 septembre 2014  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions posées sur le forum Python complétées par d'autres questions qui pouvaient nous sembler intéressantes de traiter. Toutefois il se peut que les réponses apportées contiennent des erreurs, imprécisions ... Vous pouvez dans ce cas contacter un des membres de la rédaction pour lui faire part de vos remarques.

L'équipe Python de Developpez.


SommaireGUITkinter / Tix / PmwTixTix.Combobox (2)
précédent sommaire suivant
 

Tkinter ne propose pas le widget Combobox. On peut donc utiliser la bibliothèque Tix (qui est à priori installée avec Python) ou Pmw pour récupérer ce widget. Le Combobox se compose d'un widget Entry et d'un widget Menu qui contient les éléments sélectionnables. Les paramètres importants sont:

  • editable: indique si la valeur du champ Entry est visible ou non
  • dropdown: indique si le menu se présente sous forme d'une Listbox ou d'un bouton qui permet d'afficher cette Listbox
  • variable: variable référençant la valeur sélectionnée dans la Listbox.
  • command: fonction appelée lorsqu'une valeur est sélectionnée dans la Listbox

Si vous voulez avoir une Combobox dont on puisse uniquement sélectionnée une valeur dans une liste, il faut modifier la propriété de l'état de l'Entry à readonly

Code python :
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()

Mis à jour le 17 décembre 2005 Guigui_

Pour vider la liste de choix d'un ComboBox, il vous faut tout d'abord accéder à l'objet listbox du ComboBox. Cet objet est lui-même un sous-objet de l'objet slistbox de la classe Tix.ScrolledListBox. Ainsi grâce au dictionnaire c.subwidget_list, vous pouvez tout d'abord accéder à l'objet slistbox puis avec le dictionnaire c.subwidget_list['slistbox'].subwidget_list à l'objet listbox. Il vous suffit ensuite d'appliquer la méthode usuelle sur un objet de type ListBox pour vider celui-ci. Ainsi, l'instruction c.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0, Tk.END) permet de vider la liste de choix du ComboBox c

Code python :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import Tix 
import Tkinter as Tk 
  
root = Tix.Tk() 
  
combo = Tix.ComboBox(root) 
combo.insert(0,'elem1') 
combo.insert(0,'elem2') 
combo.insert(0,'elem3') 
combo.pack() 
def clear(): 
    combo.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0, Tk.END)  
btn = Tix.Button(root, text='vider la liste', command=clear) 
btn.pack() 
  
root.mainloop()

Mis à jour le 22 novembre 2006 Guigui_

Comment supprimer un élément dans une Listbox ?

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2014 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
 
 
 
Partenaires

PlanetHoster
Ikoula