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

FAQ Python

FAQ PythonConsultez toutes les FAQ

Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 14 juin 2021 

 
OuvrirSommaireGUITkinter / Tix / PmwTixTix.Combobox

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

 
Sélectionnez
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()
Créé le 17 décembre 2005  par 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

 
Sélectionnez
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()
Créé le 22 novembre 2006  par Guigui_

Lien : Comment supprimer un élément dans une Listbox ?

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 © 2005-2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.