ef:algorithmen:temmplates

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


  • ef/algorithmen/temmplates.txt
  • Zuletzt geändert: 2025/12/11 15:00
  • von lehmannr