Seite 1 von 1

Listbox listet Dateinamen in falscher Reihenfolge auf

Verfasst: Freitag 2. Dezember 2005, 20:32
von snakeseven
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.

Verfasst: Freitag 2. Dezember 2005, 21:37
von mawe
Ist jetzt mal ungetestet, aber was is wenn Du einfach die Dateinamen sortierst?

Code: Alles auswählen

for z in sorted(allenamen):
    ...

Verfasst: Freitag 2. Dezember 2005, 22:11
von jochim
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

Verfasst: Freitag 2. Dezember 2005, 22:42
von 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 :)