Beiträge von Herr_Berg im Thema „[Python 3] Minimalistischer Taschenrechner mit Tkinter“
-
-
Wie gut bist du in Python? Ich hab ein riesiges Problem und bräuchte Hilfe...
Leicht fortgeschritten auf Heimwerker-Niveau. Frag also lieber auf Stack Overflow.
-
-
Den folgenden Taschenrechner verwende ich schon seit einiger Zeit. Das Skript wertet die Eingabe bei jedem Tastendruck aus und zeigt das Ergebnis unten an.
Als Dezimaltrennzeichen funktionieren Punkt und Komma.
Um Tkinter verwenden zu können, musste ich das Paket python3-tk installieren.
Hier ist der Code:
Python
Alles anzeigenimport tkinter as tk class Calculator: def __init__(self, master): self.master = master master.title("Cal") self.input_field = tk.Entry(master, width=89) self.input_field.pack(padx=10, pady=10) self.result_field = tk.Entry(master, width=89, state="readonly") self.result_field.pack(padx=10, pady=10) # bind key press events to the input field self.input_field.bind("<KeyRelease>", self.update_result) self.input_field.bind("<BackSpace>", self.delete_last_char) self.input_field.bind(",", self.change_decimal_separator) # set the focus to the input field self.input_field.focus() def update_result(self, event): expression = self.input_field.get().replace(",", ".") if expression: try: result = eval(expression) self.result_field.config(state="normal") self.result_field.delete(0, tk.END) self.result_field.insert(0, result) self.result_field.config(state="readonly") except: pass def delete_last_char(self, event): # delete the last character from the input field current = self.input_field.get() self.input_field.delete(len(current)-1, tk.END) def change_decimal_separator(self, event): # replace the decimal separator in the input field current = self.input_field.get() if "," in current: self.input_field.delete(0, tk.END) self.input_field.insert(0, current.replace(",", ".")) root = tk.Tk() calculator = Calculator(root) root.mainloop()