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
import 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()
Display More