import tkinter as tk
from tkinter import ttk
class Application():
def __init__(self, master):
self.master = master
self.initWidgets()
self.status =False
def initWidgets(self):
self.input1 = tk.Entry(master=self.master, relief=tk.SUNKEN, font=('Courier New', 24), width=25, fg="blue")
self.input1.pack(side=tk.TOP, pady=10)
label = tk.Label(master=self.master, text="结果")
label.pack(side=tk.TOP)
self.input2 = tk.Entry(master=self.master, relief=tk.SUNKEN, font=('Courier New', 24), width=25, fg="blue")
self.input2.pack(side=tk.TOP, pady=10)
self.clear_button = tk.Button(master=self.master,text="清除", font=('Verdana', 20), width=25)
self.clear_button.pack(side=tk.TOP, pady=10)
self.clear_button.bind("<Button-1>",self.clear)
p2 = tk.Frame(self.master)
p2.pack(side=tk.TOP)
names = ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "*", "/", ".", "=")
# 遍历字符串元组
for i in range(len(names)):
b = tk.Button(p2, text=names[i], font=('Verdana', 20), width=6)
# print(i // 4, i % 4)
b.grid(row=i // 4, column=i % 4)
if b['text'] in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".","+", "-", "*", "/"):
b.bind('<Button-1>', self.initNum)
else :
b.bind('<Button-1>', self.getResult)
def initNum(self, event):
if self.status:
# 删除
self.input1.delete(0, tk.END)
text = self.absolute_result
self.input1.insert(0, text)
index = self.input1.index(tk.INSERT)
self.input1.insert(index, event.widget['text'])
self.status = False
else:
index = self.input1.index(tk.INSERT)
text = event.widget['text']
self.input1.insert(index, text)
def getResult(self, event):
tmp_result =""
self.status = True
self.input2.delete(0, tk.END)
tmp_result += str(self.input1.get()).rstrip("+-*/")
self.absolute_result = eval(tmp_result)
self.input2.insert(tk.END, self.absolute_result)
def clear(self, event):
self.input1.delete(0, tk.END)
self.input2.delete(0, tk.END)
root = tk.Tk()
root.title("Grid布局")
Application(root)
root.mainloop()