Question

from Tkinter import *


master = Tk()

listbox = Listbox(master)
listbox.pack()
listbox.insert(END, "a list entry")

for item in ["one", "two", "three", "four"]:
    listbox.insert(END, item)

listbox2 = Listbox(master)
listbox2.pack()
listbox2.insert(END, "a list entry")

for item in ["one", "two", "three", "four"]:
    listbox2.insert(END, item)

master.mainloop()

Le code ci-dessus crée une fenêtre tkinter avec deux listboxes. Mais il y a un problème si vous voulez récupérer les valeurs à la fois parce que, dès que vous sélectionnez une valeur dans l'une, il désélectionne tout ce que vous avez sélectionné dans l'autre.

Est-ce juste une limitation développeurs doivent vivre avec?

Était-ce utile?

La solution

Réponse courte: définissez la valeur de l'attribut exportselection de tous les widgets listbox sur False ou zéro

.

De une Vue d'ensemble pythonware du widget listbox:

  

Par défaut, la sélection est exportée   le mécanisme de sélection de X. Si vous   ont plus d'un sur la zone de liste   écran, ce salit vraiment les choses   pour l'utilisateur pauvres. S'il choisit   quelque chose dans une zone de liste, puis   sélectionne quelque chose dans un autre, la   sélection originale est effacée. Il est   généralement une bonne idée de désactiver cette   mécanisme dans de tels cas. dans le   exemple suivant, trois listes déroulantes sont   utilisé dans la même boîte de dialogue:

b1 = Listbox(exportselection=0)
for item in families:
    b1.insert(END, item)

b2 = Listbox(exportselection=0)
for item in fonts:
    b2.insert(END, item)

b3 = Listbox(exportselection=0)
for item in styles:
    b3.insert(END, item)

La documentation définitive pour les widgets tk est basé sur le langage Tcl plutôt que de python, mais il est facile de traduire en python. L'attribut exportselection se trouve sur le page de manuel .

Autres conseils

exportselection=0 lors de la définition d'une zone de liste semble prendre en charge cette question.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top