最终的计算器效果可以参考如下:
1、导入Tkinter库:首先,导入tkinter模块及其子模块,用于显示错误信息。
2、创建主窗口:使用tk.Tk()创建一个主窗口,并设置窗口标题和大小。
3、设计界面布局:使用grid布局管理器,将Entry控件(用于输入数字)、OptionMenu控件(模拟ComboBox,用于选择操作符)、Label控件(用于显示结果)和Button控件(用于触发计算)按指定位置排列。
完整代码如下:
import tkinter as tk
def frame(root, side):
f = tk.Frame(root)
f.pack(side=side, expand=True, fill=tk.BOTH)
return f
def button(root, side, text, command=None):
btn = tk.Button(root, text=text, font=('宋体', '12'), command=command)
btn.pack(side=side, expand=True, fill=tk.BOTH)
return btn
class Calculator(tk.Frame):
def __init__(self):
tk.Frame.__init__(self)
self.pack(expand=True, fill=tk.BOTH)
self.master.title('简易计算器')
self.display = tk.StringVar()
entry = tk.Entry(self, relief=tk.SUNKEN, font=('宋体', '20', 'bold'), textvariable=self.display)
entry.pack(side=tk.TOP, expand=True, fill=tk.BOTH)
clearF = frame(self, tk.TOP)
button(clearF, tk.LEFT, '清除', lambda w=self.display: w.set(''))
for key in '123+', '456-', '789*', '.0=/':
keyF = frame(self, tk.TOP)
for char in key:
if char == '=':
btn = button(keyF, tk.LEFT, char)
btn.bind('<ButtonRelease-1>', lambda e, s=self, w=self.display: s.calc(w))
else:
button(keyF, tk.LEFT, char, lambda w=self.display, c=char: w.set(w.get() + c))
def calc(self, display):
try:
display.set(eval(display.get()))
except Exception:
display.set("ERROR")
5、运行主循环:最后,调用root.mainloop()启动Tkinter的主事件循环,使界面保持显示并响应用户操作。
6、效果展示
通过点击可以将要处理的数据显示在这里。输入要进行的运算再点击“=”,即可得到结果。