Tkinter : Récuperer la valeur d'un radioButon dans une boucle for
Résolu/Fermé
A voir également:
- Tkinter : Récuperer la valeur d'un radioButon dans une boucle for
- Tkinter focus() ✓ - Forum Python
- Tkinter tableau dynamique - Forum Python
- Exception in tkinter callback - Forum Python
- Tkinter récupérer valeur entry ✓ - Forum Python
- Tkinter fermer une fenêtre et en ouvrir une autre - 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()
29 oct. 2019 à 08:39
Est ce que tu arrives à récupérer 0 pour 'aaaa' et 1 pour 'bbbb' etc ?
29 oct. 2019 à 08:53
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é.
29 oct. 2019 à 13:48
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
29 oct. 2019 à 16:57
D'après la doc, sheet_names retourne une liste, l'as-tu affiché avec un print pour voir ce que ça contient ?
29 oct. 2019 à 17:16