Tkinter : Récuperer la valeur d'un radioButon dans une boucle for
Résolu
Bryan
-
khrug -
khrug -
Bonjour à vous,
J'ai un problème très simple que je n'arrive pas à résoudre malgré toutes mes tentatives.
Je veux juste récupérer la valeur des mes RadioButtons avec get(), sauf que cette valeur est soit vide soit nulle.
J'ai essayé avec des variables en Int et en String mais cela ne résout pas le problème. (J'ai déjà fais tous les forums mais aucune solution fonctionne ...)
Je vous prie de trouver ci-dessous le code correspondant :
Merci beaucoup pour vos réponses,
Bryan
J'ai un problème très simple que je n'arrive pas à résoudre malgré toutes mes tentatives.
Je veux juste récupérer la valeur des mes RadioButtons avec get(), sauf que cette valeur est soit vide soit nulle.
J'ai essayé avec des variables en Int et en String mais cela ne résout pas le problème. (J'ai déjà fais tous les forums mais aucune solution fonctionne ...)
Je vous prie de trouver ci-dessous le code correspondant :
please=tk.IntVar() def Sheet(list_sheet): sheet_name=tk.Tk() whichsheet=tk.Label(sheet_name, text="Veuillez cocher la feuille sur laquelle vous souhaitez travailler.") whichsheet.pack() for i in range (len(list_sheet)): choix=tk.Radiobutton(sheet_name, text=list_sheet[i], variable=please, value=i, command=catch) choix.pack() confirm=tk.Button(sheet_name, text="Confirmer", command=sheet_name.destroy) confirm.pack() sheet_name.mainloop() def catch(): print (please.get()) Sheet(SheetNameList)
Merci beaucoup pour vos réponses,
Bryan
Configuration: Windows / Firefox 68.0
A voir également:
- Tkinter : Récuperer la valeur d'un radioButon dans une boucle for
- Tkinter tableau - Forum Python
- Probleme tkinter injustifier - Forum Python
- Pygame ou tkinter ? - Forum Python
- Probleme collision avec tkinter - Forum Python
- Problème avec grid tkinter ✓ - Forum Python
2 réponses
Bonjour,
Chez moi ton code plante, car tu as créés une var tkinter avant d'avoir créer la fenêtre.
Par ex. comme ça :
Cela fonctionne très bien.
Chez moi ton code plante, car tu as créés une var tkinter avant d'avoir créer la fenêtre.
Par ex. comme ça :
import tkinter as tk def Sheet(list_sheet): whichsheet=tk.Label(sheet_name, text="Veuillez cocher la feuille sur laquelle vous souhaitez travailler.") whichsheet.pack() for i in range (len(list_sheet)): choix=tk.Radiobutton(sheet_name, text=list_sheet[i], variable=please, value=i, command=catch) choix.pack() confirm=tk.Button(sheet_name, text="Confirmer", command=sheet_name.destroy) confirm.pack() sheet_name.mainloop() def catch(): print (please.get()) sheet_name=tk.Tk() SheetNameList = ('aaaa', 'bbbbb') please=tk.IntVar() Sheet(SheetNameList)
Cela fonctionne très bien.
Si quelqu'un à le même problème, ça doit être parce qu'une fenêtre n'est pas fermée (destroy) dans mon cas c'était celle que askopenfilename ouvrée.
Donc la fenemture de la fenêtre empêchait la var tkinter de fonctionner ?
J'aimerai bien comprendre.
Puis d'ailleurs pour éviter d'avoir 2 fenêtres principales, car, si elle n'est pas créée, tkinter en fera une automatiquement, c'est ce qu'il se passe lorsque tu utilises askopenfilename.
Il suffit d'appeler askopenfilename après avoir créé ta fenêtre.
J'aimerai bien comprendre.
Puis d'ailleurs pour éviter d'avoir 2 fenêtres principales, car, si elle n'est pas créée, tkinter en fera une automatiquement, c'est ce qu'il se passe lorsque tu utilises askopenfilename.
Il suffit d'appeler askopenfilename après avoir créé ta fenêtre.
import xlrd import tkinter as tk from tkinter.filedialog import askopenfilename def Sheet(list_sheet): whichsheet=tk.Label(sheet_name, text="Veuillez cocher la feuille sur laquelle vous souhaitez travailler.") whichsheet.pack() for i in range (len(list_sheet)): choix=tk.Radiobutton(sheet_name, text=list_sheet[i], variable=please, value=i, command=catch) choix.pack() def catch(): print (please.get()) sheet_name=tk.Tk() please=tk.IntVar() name = askopenfilename() #Avoir le chemin d'acces du fichier workbook = xlrd.open_workbook(name) SheetNameList = workbook.sheet_names() Sheet(SheetNameList) confirm=tk.Button(sheet_name, text="Confirmer", command=sheet_name.destroy) confirm.pack() sheet_name.mainloop()
Est ce que tu arrives à récupérer 0 pour 'aaaa' et 1 pour 'bbbb' etc ?
Oui, j'obtiens bien 0 pour "aaaa" et 1 pour "bbbb"
Hum, es-tu sûr d'exécuter le bon script ? Celui que tu modifies et pas un autre ?
Car, il est très étrange que tu n'aies pas eu de plantages avec le script que tu as posté.
import xlrd
import tkinter as tk
from tkinter.filedialog import askopenfilename
name = askopenfilename() #Avoir le chemin d'acces du fichier
workbook = xlrd.open_workbook(name)
SheetNameList = workbook.sheet_names()
Aurais-tu une explication ?
Merci beaucoup pour tes réponses,
Bryan
D'après la doc, sheet_names retourne une liste, l'as-tu affiché avec un print pour voir ce que ça contient ?