Listbox listet Dateinamen in falscher Reihenfolge auf

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

Listbox listet Dateinamen in falscher Reihenfolge auf

Beitragvon snakeseven » Freitag 2. Dezember 2005, 20:32

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])

Beitragvon mawe » Freitag 2. Dezember 2005, 21:37

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

Beitragvon jochim » Freitag 2. Dezember 2005, 22:11

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

Beitragvon Gast » Freitag 2. Dezember 2005, 22:42

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 :)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder