[Zweiter Versuch, da die Nachricht wegen der Probleme von python.net beim ersten Mal wahrscheinlich nicht angekommen ist] Am Samstag, 14. Oktober 2006 18:49 schrieben Sie:
http://svn.python.org/view/python/trunk/Demo/tkinter/guido/sortvisu.py?re v=36560&view=markup
dass is mir ein bisserl zu kompliziert...bin ein neuling! kann mir bitte jemand helfen meinen quellcode zu berichtigen?
lg. danke im voraus
Hier Dein Programm mit möglichst wenigen Änderungen: import Tkinter import random Liste = [] sprung = 3 def testliste(r=100): for x in range(r): Liste.append(random.randint(1,300)) Fenster = Tkinter.Tk() Fenster.title("Sortieren") Leinwand = Tkinter.Canvas(Fenster, width=300, height=250, bg="white") Leinwand.grid() testliste(r=100) def create_lines(x, w): Leinwand.create_line(0, x, w, x, width=2) def create_sort_lines(x, w): Leinwand.create_line(0, x, w, x, width=2) def clear_canvas(): for id in Leinwand.find_all(): Leinwand.delete(id) for i in Liste: create_lines(sprung, i) sprung = sprung + 2 def bubble_sort(lst): for i in range(0, len(lst)): for j in range(0, len(lst) - 1 - i): if lst[j] > lst[j + 1]: lst[j], lst[j + 1] = lst[j + 1], lst[j] #print lst sp = 3 clear_canvas() for i in lst: create_sort_lines(sp, i) sp = sp + 2 yield None next_step = bubble_sort(Liste).next def bubble_sort_stepper(): try: next_step() except StopIteration: pass else: Fenster.after(1, bubble_sort_stepper) Fenster.after_idle(bubble_sort_stepper) Fenster.mainloop() Damit das GUI-Interface auf Benutzereingaben reagieren kann, habe ich aus bubble_sort() einen Generator gemacht und eine Funktion bubble_sort_stepper() hinzugefügt, die den jeweils den nächsten Schritt von bubble_sort() ausführt und sich selbst nach einer Millisekunde wieder aufruft. Peter _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (1)
-
Peter Otten