在 Python 中制作计算器
tkinter包适合编写一些简单的图形用户界面程序,这里演示使用tkinter制作一个简单的计算器。tkinter是Python的一个标准包,因此我们并不需要安装它,只需要导入它即可。
import tkinter as tk
这个计算器可以执行不同的算术操作,如加,减,乘和除。
计算器效果图:
非常的简单,这里也就不多介绍了,不如直接看代码吧。代码也挻少了,不到100行。感觉也没什么要解释的,基本也都有注释了。
当然这个计算器非常不完善,有兴趣的同学可以把它优化完善下。
所有代码
'''
Author: MarkLong
Date: 2021-05-15 12:12:22
Description: Calculator 计算器
'''
import tkinter as tk
class Calculator(tk.Tk):
def __init__(self):
super(Calculator, self).__init__()
# 窗口标题
self.title('Calculator')
# 设定窗口的大小
self.geometry('300x400+500+200')
# 不能调整大小
self.resizable(0, 0)
# 显示用的变量
self.num = ''
# 用于显示输入和结果的标签screen_label
self.scr_lbl = tk.Label(
self,
text='',
font=('Arial', 20),
anchor=tk.SE,
bg='#595954',
fg='white',
height=2,
)
self.scr_lbl.pack(expand=True, fill=tk.BOTH)
# 创建4个frames
frames = [tk.Frame(self) for _ in range(4)]
for frame in frames:
frame.pack(expand=True, fill=tk.BOTH)
# 创建buttons
key_nums = [1, 2, 3, '+', 4, 5, 6, '-', 7, 8, 9, '*', 'C', 0, '=', '/']
for n, key in enumerate(key_nums):
key_n = tk.Button(
frames[n // 4],
text=key,
font=('Arial', 22),
border=0,
activebackground='cyan',
bg='#2E2E2B',
fg='white',
command=lambda key=key: self.display(key)) # 使用lambda,传递参数
# lambda使用key=key技巧使函数在定义lambda时存储key的当前值,而不是等待稍后查找key值
key_n.pack(expand=True, fill=tk.BOTH, side=tk.LEFT)
if key == 'C':
key_n.config(command=self.clear_scr)
if key == '=':
key_n.config(command=self.equal_btn)
# 显示函数
def display(self, number):
self.num += str(number)
self.scr_lbl['text'] = self.num
# 清除显示
def clear_scr(self):
self.num = ''
self.scr_lbl['text'] = self.num
# 等于函数
def equal_btn(self):
try:
result = str(eval(self.num))
self.num = result
self.scr_lbl['text'] = result
except Exception as e:
print('计算出错, error: ', e)
self.clear_scr()
self.scr_lbl.config(text='error')
if __name__ == "__main__":
# 实例化窗口对象
app = Calculator()
# 主窗口循环显示,让window不断的刷新。
app.mainloop()