Je veux utiliser la valeur sélectionnée dans ma liste dans la commande d'un bouton, de sorte qu'aucun code ne s'exécute tant que le bouton "Go" n'est pas enfoncé. Jusqu'ici, j'ai seulement vu qu'une liste déroulante exécute du code sur la sélection d'un élément en se liant à <>. Cela me semble stupide, un programme devrait certainement avoir une sorte de sélection en deux étapes pour s'assurer que l'utilisateur sélectionne exactement ce qu'il veut (tangente, désolé).Appeler une fonction sur un bouton en utilisant la valeur de la boîte de liste Tkinter
J'ai essayé jusqu'à présent de créer une variable pour la sélection en cours en utilisant .curselection() [0] et .get mais j'obtiens une erreur d'index (probablement parce qu'il n'y a pas de sélection au départ). Ensuite, si je définis une sélection initiale, je ne peux pas la changer et elle sera toujours exécutée en fonction de cette sélection.
Sûrement cela devrait être facile et il me manque quelque chose.
[EDIT] Ajout de code dump comme suggéré:
class DataVisualiser:
def __init__(self, master):
master.minsize(width=600, height=400)
frame = Frame(master)
frame.grid()
# Histogram Generator
hist_options = ["Cat vs. Dog", "Cat Breed", "Dog Breed", "Cat Name", "Dog Name", "Cat Location",
"Dog Location", "Cat Registration", "Dog Registration"]
hist_dd = Listbox(master, bg="#cfcfcf", fg="black", font="Helvetica", height=5, selectmode=SINGLE)
for o in hist_options:
hist_dd.insert(0, o)
hist_dd.grid(row=0, column=0)
hist_dd.selection_set(first=0)
hist_scroll = Scrollbar(master, orient=VERTICAL)
hist_dd["yscrollcommand"] = hist_scroll.set
hist_scroll["command"] = hist_dd.yview
hist_scroll.grid(row=0, column=1, rowspan=7, sticky=N+S)
# scrollbar from: https://www.youtube.com/watch?v=xNLdB0jY1Rg
# HERE: I want to pass the value from the listbox to another function via this button
hist_gen = Button(master, text="Go!",
command=lambda group=hist_dd.get(hist_dd.curselection()[0]): generate_histogram(group))
# still need to fully implement this
hist_gen.grid(row=6, column=0, sticky=W+E)
def generate_histogram(group):
print(group)
return None
root = Tk()
dv = DataVisualiser(root)
root.mainloop()
Votre code nous aiderait tous. S'il vous plaît lire [MCVE]. – Lafexlos
Dans la fonction de rappel du bouton ** GO **, pouvez-vous simplement obtenir l'élément de la liste? – wwii
Avec quoi? Comme je l'ai dit 'command = lambda groupe = w.get (w.curselection() [0]): go (groupe))' entraîne une erreur d'index. – 420fedoras