Listbox listet Dateinamen in falscher Reihenfolge auf

Fragen zu Tkinter.
Antworten
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Hallo,
meine Listbox liest sich aus einem Verzeichnis die Namen der darin enthaltenen Dateien ein. Leider zeigt sie die Dateien anschließend nicht alphabetisch an, sondern nach Erstellungsdatum sortiert. Finde keine Option, mit der ich das beeinflussen kann ? Brauche die alphabetische Reihenfolge.

Code: Alles auswählen

li = Listbox(root, height=20, yscrollcommand=scb.set)
scb["command"] = li.yview
li.pack(side="left")

allenamen = os.listdir(path_name)
for z in allenamen:
    name =  z[:-4]
    li.insert(END,name)
Thanx for help

Edit (Leonidas): Code in Python-Tags gesetzt.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Ist jetzt mal ungetestet, aber was is wenn Du einfach die Dateinamen sortierst?

Code: Alles auswählen

for z in sorted(allenamen):
    ...
jochim
User
Beiträge: 32
Registriert: Montag 5. August 2002, 20:47
Wohnort: Dortmund

auch das vorherige sortieren einer Liste funktioniert hier mit "[liste].sort()". Beispiel:

Code: Alles auswählen

from Tkinter import *
import os

root = Tk()
li = Listbox(root, height=10)
li.pack(side="left")

items = ["cool", "zum Verzweifeln" , "15.0","Analphabet", "Knacki", "1", "3.) Punkt 7:", "Ungeheuer", "Belzebub", "blob"]

items.sort()

for z in items:
    name =  z
    li.insert(END,name)
    
root .mainloop()
wobei immer nach den ersten Buchstaben der Strings sortiert wird, also zuerst Zahlen dann Großbuchstaben dann kleine.

Gruß
Jochim
Gast

mawe hat geschrieben:Ist jetzt mal ungetestet, aber was is wenn Du einfach die Dateinamen sortierst?

Code: Alles auswählen

for z in sorted(allenamen):
    ...
Mit sorted() klappts, danke ! Jetzt habe ich noch das Problem, daß im Windowsverzeichnis der Name 'Fränki' vor 'Fritz' steht und in meiner Listbox die Reihenfolge 'Fritz', 'Fränki' ist. Sortiert Windows falsch oder Python, besser noch, kann ich darauf Einfluss nehmen ? Ich MUSS die Windowsreihenfolge haben, sonst krieg ich Haue :)
Antworten