做了一个超级简单浓缩版计算器,没有贴图什么的
实现效果:
import tkinter as tk
class Jisuanqi:
def __init__(self, master):
self.master = master
master.title("计算器")
self.result_text = tk.StringVar()
self.result_text.set("0")
self.entry = tk.Entry(master, textvariable=self.result_text, justify='right', font=('Arial', 20))
self.entry.grid(row=0, column=0, columnspan=4, sticky='nsew')
button_texts = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+'
]
row_num = 1
col_num = 0
for text in button_texts:
button = tk.Button(master, text=text, font=('Arial', 16), command=lambda t=text: self.button_click(t))
button.grid(row=row_num, column=col_num, sticky='nsew')
col_num += 1
if col_num > 3:
col_num = 0
row_num += 1
master.bind('<Key>', self.keyboard_click)
def button_click(self, value):
current_text = self.result_text.get()
if value == '=':
try:
result = eval(current_text)
self.result_text.set(str(result))
except:
self.result_text.set("错误")
elif value == 'C':
self.result_text.set("0")
else:
if current_text == "0":
self.result_text.set(value)
else:
self.result_text.set(current_text + value)
def keyboard_click(self, event):
value = event.char
if value.isdigit() or value in ['+', '-', '*', '/', '.', '=', '\r']:
self.button_click(value)
if __name__ == "__main__":
root = tk.Tk()
app = Jisuanqi(root)
root.mainloop()