Dieses Beispiel zeigt einen Pythagoras-Taschenrechner,der mit grid() konstruiert ist.
grid()Das folgende Python-Programm implementiert einen Taschenrechner, der die Pythagoras-Regel (a2 + b2 = c2) überprüft und berechnet.
# pythagoras_calculator_grid.py
# Pythagoras-Taschenrechner mit Tkinter und Grid-Layout
# Fixed size, kein Resize, alles mit grid() positioniert
import tkinter as tk
from tkinter import messagebox
import pythagoras # Das bestehende Modul (Aufforderung: bereits im Ordner)
# === Hauptfenster ===
class PythagorasCalculatorApp:
def __init__(self, root):
self.root = root
self.root.title("Pythagoras-Taschenrechner")
self.root.geometry("500x400")
self.root.resizable(False, False) # Fenster nicht vergrößern!
# === Layout mit grid() ===
self.create_widgets()
def create_widgets(self):
# Titel
self.title_label = tk.Label(
self.root,
text="Pythagoras-Taschenrechner",
font=("Arial", 16, "bold"),
fg="blue"
)
self.title_label.grid(row=0, column=0, columnspan=3, sticky="w", padx=20, pady=10)
# Eingabefelder
self.label_a = tk.Label(self.root, text="a (Länge):", font=("Arial", 10))
self.label_a.grid(row=1, column=0, sticky="w", padx=20, pady=5)
self.entry_a = tk.Entry(self.root, width=10, font=("Arial", 12))
self.entry_a.grid(row=1, column=1, padx=5, pady=5)
self.label_b = tk.Label(self.root, text="b (Länge):", font=("Arial", 10))
self.label_b.grid(row=2, column=0, sticky="w", padx=20, pady=5)
self.entry_b = tk.Entry(self.root, width=10, font=("Arial", 12))
self.entry_b.grid(row=2, column=1, padx=5, pady=5)
self.label_c = tk.Label(self.root, text="c (Hypotenuse):", font=("Arial", 10))
self.label_c.grid(row=3, column=0, sticky="w", padx=20, pady=5)
self.entry_c = tk.Entry(self.root, width=10, font=("Arial", 12))
self.entry_c.grid(row=3, column=1, padx=5, pady=5)
# Buttons (3 Spalten, 3 Zeilen)
self.btn_aufstellen = tk.Button(
self.root,
text="a2 + b2 = ?",
font=("Arial", 10),
bg="lightblue",
command=self.calculate_sum_of_squares
)
self.btn_aufstellen.grid(row=4, column=0, padx=20, pady=10)
self.btn_kontrolliere = tk.Button(
self.root,
text="a2 + b2 == c2?",
font=("Arial", 10),
bg="lightgreen",
command=self.check_pythagoras
)
self.btn_kontrolliere.grid(row=4, column=1, padx=10, pady=10)
self.btn_wurzel = tk.Button(
self.root,
text="√(a2 + b2) = ?",
font=("Arial", 10),
bg="lightyellow",
command=self.calculate_hypotenuse
)
self.btn_wurzel.grid(row=4, column=2, padx=10, pady=10)
# Ergebnis-Label
self.result_label = tk.Label(
self.root,
text="Ergebnis: ",
font=("Arial", 12),
fg="darkblue"
)
self.result_label.grid(row=5, column=0, columnspan=3, sticky="w", padx=20, pady=10)
# Historie-Label
self.history_label = tk.Label(
self.root,
text="Historie: ",
font=("Arial", 10),
fg="gray"
)
self.history_label.grid(row=6, column=0, columnspan=3, sticky="w", padx=20, pady=5)
# Info-Label (Unten)
self.info_label = tk.Label(
self.root,
text="Geben Sie positive Zahlen ein. Negative Werte führen zu Fehler!",
font=("Arial", 9),
fg="red"
)
self.info_label.grid(row=7, column=0, columnspan=3, sticky="w", padx=20, pady=5)
# Historie-Liste (nur für Info)
self.history = []
def calculate_sum_of_squares(self):
try:
a = float(self.entry_a.get())
b = float(self.entry_b.get())
result = pythagoras.aufstellen(a, b)
self.update_result(f"a2 + b2 = {a}2 + {b}2 = {result}")
self.history.append(f"a2 + b2 = {a}2 + {b}2 = {result}")
except ValueError:
messagebox.showerror("Fehler", "Bitte geben Sie gültige Zahlen ein!")
def check_pythagoras(self):
try:
a = float(self.entry_a.get())
b = float(self.entry_b.get())
c = float(self.entry_c.get())
is_valid = pythagoras.kontrolliere(a, b, c)
result_text = f"{a}2 + {b}2 = {c}2 → {'Ja' if is_valid else 'Nein'}"
self.update_result(result_text)
self.history.append(result_text)
except ValueError:
messagebox.showerror("Fehler", "Bitte geben Sie gültige Zahlen ein!")
except Exception as e:
messagebox.showerror("Fehler", str(e))
def calculate_hypotenuse(self):
try:
a = float(self.entry_a.get())
b = float(self.entry_b.get())
hyp = pythagoras.wurzel(a, b)
result_text = f"√({a}2 + {b}2) = {hyp:.2f}"
self.update_result(result_text)
self.history.append(result_text)
except ValueError:
messagebox.showerror("Fehler", "Bitte geben Sie gültige Zahlen ein!")
def update_result(self, text):
self.result_label.config(text=f"Ergebnis: {text}")
self.history_label.config(text=f"Historie: {', '.join(self.history)}")
# === Start-Programm ===
if __name__ == "__main__":
root = tk.Tk()
app = PythagorasCalculatorApp(root)
root.mainloop()
>
pythagoras muss bereits existieren und die Funktionen aufstellen(), kontrolliere() und wurzel() implementieren.