======= IV. Python-Templates für eine Sortier-App ======= ====== 1. Tkinter-Template ======= import tkinter as tk algo = 0 def start_it(): print("Gestartet") def bubble_sort(): global algo algo = 1 print(algo) def selection_sort(): global algo algo = 2 print(algo) def merge_sort(): global algo algo = 3 print(algo) root = tk.Tk() root.title("Sortier-Algorithmen") # Zeichenfläche canvas = tk.Canvas(root, width=1000, height=500, bg='lightyellow') canvas.pack(padx=30) label1 = tk.Label(root, text="Hallo",font=('Arial',30)) label1.pack() button1 = tk.Button(root, text="Start", command=start_it) button1.pack() # Menu menubar = tk.Menu() root.config(menu=menubar) algMenu = tk.Menu(menubar) menubar.add_cascade(label="Algorithmus", menu=algMenu) algMenu.add_command(label="Bubblesort" , command=bubble_sort) algMenu.add_command(label="Selectionsort", command=selection_sort) algMenu.add_command(label="Mergesort", command=merge_sort) root.mainloop() ====== 2. Sortier-Template ====== import random import time import tkinter as tk # Konstanten MARGIN_BOTTOM = 30 BAR_WIDTH = 10 HEIGHT = 400 WIDTH = 1100 # Zufallsdaten zwischen 1 und 100 (jede Zahl nur 1x) data = random.sample(range(0, 100), 100) # Fenster und Canvas root = tk.Tk() # Hauptfenster von Tkinter root.title("Bubble Sort") canvas = tk.Canvas(root, width=WIDTH, height=HEIGHT, bg="lightyellow") # Zeichenfläche erstellen canvas.pack() # die Zeichenfläche platzieren mit pack (Alternativen: grid, place) def draw_list(lst): canvas.delete("all") for index, val in enumerate(lst): x = 20 + index * BAR_WIDTH y0 = HEIGHT - MARGIN_BOTTOM y1 = HEIGHT - MARGIN_BOTTOM - (val * 3) # Skaliere 0..100 canvas.create_line(x, y0, x, y1, width=BAR_WIDTH-2, fill="red") canvas.update() def bubble_sort(lst, delay_sec=0.01): n = len(lst) for i in range(n - 1, 0, -1): for j in range(i): if lst[j] > lst[j + 1]: lst[j], lst[j + 1] = lst[j + 1], lst[j] draw_list(lst) time.sleep(delay_sec) draw_list(lst) # finaler Zustand # Start draw_list(data) bubble_sort(data, delay_sec=0.001) root.mainloop()