Home

Pythagoras-Taschenrechner mit Tkinter und Place()

Dieses Beispiel zeigt einen Pythagoras-Taschenrechner,der mit grid() konstruiert ist.

Python-Beispiel: Pythagoras-Taschenrechner mit Tkinter und 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()


>
Wichtige Hinweise: