利用tkinter实现简单计算器功能(不使用eval函数)
一、思路
tkinter:
- 布置主界面;
- 上部为数字显示界面;
- 下部为数字键与功能键界面;
逻辑:
- 程序只考虑两个操作数进行计算的情况,不考虑复杂情况
展示:
二、代码实现
根据上述思路,利用python实现简单计算器程序,代码如下:
# 第一步:画出图形界面-上部
from tkinter import *
root = Tk() # 创建舞台
# 定义面板的大小
root.geometry('250x380')
root.title('Calculator')
# 定义面板
# Frame:框架,在屏幕上创建一块矩形区域,多作为容器来布局窗体
# bg代表背景颜色background,#dddddd是十六进制表示颜色的一个串
frame_show = Frame(width=300,height=150,bg='#dddddd')
frame_show.pack()
# 定义顶部区域,设置字符串-初始化为0
sv = StringVar()
sv.set('0')
# anchor:定义控件的锚点,西对齐”w”,东对齐”e”,北对齐”n”,南对齐”s”,默认为” center”
# 还有“nw”, “sw”, “se”, “ne”
# Label中的width和height单位不是像素,而是占据字符的位数
# font代表字体
show_label = Label(frame_show,textvariable=sv, \
bg='green', width=12, height=1, \
font=("黑体", 20, 'bold'), \
justify=LEFT, anchor='e') #用label显示字符串
# padx和pady用于设置框架的外部填充显示,ipadx和ipady用于设置框架的内部显示
show_label.pack(ipadx=5, ipady=5, padx=10, pady=10)
#frame_show.pack()
# 第二步:画出图形界面-下部
# 定义退格函数
def delete():
# 先用get获取sv的值,然后删掉其最后一位
sv.set(sv.get()[:-1])
# 定义取反函数
def inverse():
# 先用get获取sv的值,然后转换为整形,再乘-1
inverse_value = float(sv.get()) * -1
sv.set(inverse_value)
# 定义清零函数
def clear():
global num1, num2, operator
sv.set('0')
num1 = ''
num2 = ''
operator = ''
# 定义下部按键区域
frame_bord