Tkinter, combobox et espace qui devient un "\n"

Messages postés
3098
Date d'inscription
lundi 11 novembre 2013
Dernière intervention
11 décembre 2018
-
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()


Et une image :



Merci d'avance.

Thomas.



Comme un sage m'a dit : « en France, on a le droit de tout faire....
Faut juste ne pas se faire choper. »
Afficher la suite 

Votre réponse

2 réponses

Messages postés
3098
Date d'inscription
lundi 11 novembre 2013
Dernière intervention
11 décembre 2018
0
Merci
Yo !


J'y arrive toujours pas, j'aurais besoin qu'on m'aiguille sur l'erreur que j'ai commisse, pliiiiz :)


Merci

Et bonne soirée.
Commenter la réponse de little boy62
Messages postés
70
Date d'inscription
mercredi 1 novembre 2000
Dernière intervention
1 juin 2018
0
Merci
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()

--
Commenter la réponse de Mints

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.