Comment activer la sélection multiple de valeurs à partir d'une zone de liste déroulante?


jknicely

Python 3.4.3, Windows 10, Tkinter

J'essaie de créer une zone de liste déroulante qui permet plusieurs sélections dans la liste déroulante. J'ai trouvé un travail similaire pour listbox ( Python Tkinter sélection multiple Listbox ), mais je ne peux pas le faire fonctionner avec la combobox.

Existe-t-il un moyen simple d'activer la sélection multiple dans la liste déroulante de la liste déroulante?

Bryan Oakley

De par sa conception, la zone de liste déroulante ttk ne prend pas en charge les sélections multiples. Il est conçu pour vous permettre de choisir un élément dans une liste de choix.

Si vous avez besoin de pouvoir faire plusieurs choix, vous pouvez utiliser un bouton de menu avec un menu associé et ajouter des boutons à cocher ou des boutons radio au menu.

Voici un exemple:

import Tkinter as tk

class Example(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)

        menubutton = tk.Menubutton(self, text="Choose wisely", 
                                   indicatoron=True, borderwidth=1, relief="raised")
        menu = tk.Menu(menubutton, tearoff=False)
        menubutton.configure(menu=menu)
        menubutton.pack(padx=10, pady=10)

        self.choices = {}
        for choice in ("Iron Man", "Superman", "Batman"):
            self.choices[choice] = tk.IntVar(value=0)
            menu.add_checkbutton(label=choice, variable=self.choices[choice], 
                                 onvalue=1, offvalue=0, 
                                 command=self.printValues)
    def printValues(self):
        for name, var in self.choices.items():
            print "%s: %s" % (name, var.get())

if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True)
    root.mainloop()

Articles connexes