Sort will nicht so wie ich will

Fragen zu Tkinter.
Antworten
Benutzeravatar
LinuxDonald
User
Beiträge: 11
Registriert: Sonntag 7. März 2010, 18:25
Wohnort: Tangermünde
Kontaktdaten:

Ich habe ein problem mit sort das nicht so wirklich will.

Code: Alles auswählen

import sys, tkinter
from tkinter import filedialog

# ToDo:
# def sortieren(): anpassen.


def newfile(fr):
	pass

def openfile(fr):
	fileopen = filedialog.askopenfilename()
	d = open(fileopen)
	z = d.readline()
	while z:
		fr.insert("end", z)
		z = d.readline()
	d.close()

def savefile(fr,d):
	filesave = filedialog.asksaveasfilename()
	d = open(filesave,"w")
	z = d.write(fr.get(1.0, "end"))
	d.close()

def ende():
	sys.exit()

def sortieren(fr):
	d = fr.get(1.0, "end")
	print(d)
	d.sort()
	print(d)
das kommt als fehlermeldung:

Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib64/python3.1/tkinter/__init__.py", line 1399, in __call__
return self.func(*args)
File "./asw-sort-gui.py", line 38, in <lambda>
mEdit.add_command(label="Sortieren", command=lambda: functions.sortieren(fr))
File "/home/LinuxDonald/asw-sort/functions.py", line 32, in sortieren
d.sort()
AttributeError: 'str' object has no attribute 'sort'
Zuletzt geändert von Anonymous am Montag 14. Juni 2010, 11:30, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@LinuxDonald: Die Ausnahme sagt doch eigentlich alles notwendige: `d` ist eine Zeichenkette und Zeichenketten haben nunmal keine `sort()`-Methode.
Benutzeravatar
LinuxDonald
User
Beiträge: 11
Registriert: Sonntag 7. März 2010, 18:25
Wohnort: Tangermünde
Kontaktdaten:

Wie kann ich es dann sortieren lassen? Kannst du mir da helfen bitte?
BlackJack

Was möchtest Du denn sortieren? Die Zeilen? Dann musst Du die Zeichenkette in Zeilen aufteilen. Dafür haben Zeichenketten Methoden.
Benutzeravatar
LinuxDonald
User
Beiträge: 11
Registriert: Sonntag 7. März 2010, 18:25
Wohnort: Tangermünde
Kontaktdaten:

Kennst du dafür vielleicht einen Deutsche Tutorial?
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Was willst du sortieren:
- Buchstaben
- Worte
- Zeilen
- ???
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

LinuxDonald hat geschrieben:Kennst du dafür vielleicht einen Deutsche Tutorial?
http://tutorial.pocoo.org/
Benutzeravatar
LinuxDonald
User
Beiträge: 11
Registriert: Sonntag 7. März 2010, 18:25
Wohnort: Tangermünde
Kontaktdaten:

@pillmuncher Nach Zeilen
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Zeig demnächst lauffähigen Code - das vereinfacht die Sache. Ich rate mal, dass fr ein Text-Widget sein soll. Das folgende Snippet hilft dir auf die Sprünge:

Code: Alles auswählen

import tkinter as tk

def sort_it():
    content = "\n".join(sorted(text.get("1.0","end").splitlines()))
    text.delete("1.0","end")
    text.insert("end",content)

root = tk.Tk()
text = tk.Text(root)
text.pack()
tk.Button(root,text="Sortieren",command=sort_it).pack()
root.mainloop()
Benutzeravatar
LinuxDonald
User
Beiträge: 11
Registriert: Sonntag 7. März 2010, 18:25
Wohnort: Tangermünde
Kontaktdaten:

Benutzeravatar
LinuxDonald
User
Beiträge: 11
Registriert: Sonntag 7. März 2010, 18:25
Wohnort: Tangermünde
Kontaktdaten:

@numerix vielen Dank für das Beispiel. Funktioniert :)

Und auch Danke allen anderen für ihre Hilfe :)
Antworten