little boy62
Messages postés3584Date d'inscriptionlundi 11 novembre 2013StatutMembreDernière intervention15 avril 2024
-
Modifié le 29 mai 2018 à 23:13
Mints
Messages postés69Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention 1 juin 2018
-
1 juin 2018 à 17:51
Bonjour / Bonsoir.
Je cherche simplement à remplir un "simple" combobox (menu déroulant).
Qui contiendra (dans cet exemple) : deux dossiers.
1. Le dossier n°1 s'intitule Test1
2.Le dossier n°2 s'intitule Test 2 (espace entre Test et 2)
Donc, je créé ce code.
Mais l'espace du dossier n°2 est traduit par un saut à la ligne dans le combobox.
Au lieu d'avoir donc 2 lignes (les 2 dossiers), j'en ai 3...
Et je comprends pas pourquoi...............................
Si quelqu'un pourrait m'éclairer, ça sera sympa...
Voici le code :
from tkinter import *
from tkinter import ttk
from pprint import pprint
import re, os, webbrowser
def lister():
dossier_list = ""
dossier_actuel = sys.path[0].replace("\\","\\\\")
for element in os.listdir(dossier_actuel):
dossier_l = dossier_actuel + "\\\\" + element
if os.path.isdir(dossier_l):
dossier_list += dossier_l +"\n"
if dossier_list != "":
combobox['values'] = dossier_list
fenetre = Tk(None,None,"\TITRE")
fenetre.geometry("580x435+10+10")
listerbtn = Button(fenetre,text="lister",command=lister)
listerbtn.place(x=5,y=5,width=100,height=24)
combobox = ttk.Combobox(fenetre)
combobox.place(x=110,y=5,width=200,height=24)
fenetre.mainloop()
Mints
Messages postés69Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention 1 juin 20187 1 juin 2018 à 17:51
salut, d'après ce que j'ai compris :
combobox['values'] = "t1 t2 t3"
va ajouter à chaque index(value) de la liste déroulante les chaines de caractères de droite avec comme séparateur l'espace.
Pour résoudre ton problème du devrait utiliser une liste avec autant d'éléments que de dossiers.
from tkinter import *
from tkinter import ttk
from pprint import pprint
import re, os, webbrowser
def lister():
dossier_list = []
dossier_actuel = sys.path[0].replace("\\","\\\\")
for element in os.listdir(dossier_actuel):
dossier_l = dossier_actuel + "\\\\" + element
if os.path.isdir(dossier_l):
dossier_list.append(dossier_l)
if dossier_list != []:
combobox['values'] = dossier_list
def selection_dossier(event):
print(combobox.get())
fenetre = Tk(None,None,"\TITRE")
fenetre.geometry("580x435+10+10")
listerbtn = Button(fenetre,text="lister",command=lister)
listerbtn.place(x=5,y=5,width=100,height=24)
combobox = ttk.Combobox(fenetre)
combobox.place(x=110,y=5,width=250,height=24)
combobox.bind('<<ComboboxSelected>>', selection_dossier)
fenetre.mainloop()