======= 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()