Content
- 案例介绍
- 准备工作
- 界面模块
- 计算模块
- 代码汇总
- 运行截图
- 后记
案例介绍
今天我们来做一个简易版的计算器,为什么说是简易版呢?因为我们没有清空键、退格键、百分号、括号、数学运算所需要的特殊符号。
我们将要学习:1.如何科学地批量生成按钮,并赋予事件以及位置。2.python 中数学运算如何实现。
准备工作
- Python 3.x
界面模块
界面包括了两个部分内容:输入框(同时作为输出框),键盘按钮。
【key points】
- 按钮的 relief 属性:tkinter中按钮的浮雕样式
- 传入带参数的属性值:
command=lambda idx=key:btn_command(idx)
def btn_command(idx=None):
pass
计算模块
计算模块我们会单独写一个函数,来拓展未来可能会遇到的复杂情况。
代码汇总
# coding: utf-8
# !/usr/bin/python
"""
@File : 计算器.py
@Author : jiaming
@Modify Time: 2020/4/26 21:27
@Contact :
@Version : 1.0
@Desciption : 没有 AC,回退,括号,百分号
"""
import tkinter as tk
# 文本框中内容
TEXT_str = ''
def get_value():
"""
求值
:return:
"""
try:
value = str(eval(TEXT_str))
return value
except:
print('出错!')
return ''
def main():
"""
绘制计算器界面
"""
# 界面对象的基本参数设置
root = tk.Tk()
root.title("计算器(Version1)")
root.geometry('335x215+250+250')
# 设置界面是否可以随意拉伸
root.resizable(False, False)
text_list = [
'7', '8', '9', '+',
'4', '5', '6', '-',
'1', '2', '3', '*',
'.', '0', '=', '/',
]
# 放置文本框
Entry_word = tk.Entry(root, width=30, font=('Arial', 15))
Entry_word.grid(row=0, column=0, columnspan=4)
def btn_command(idx=None):
"""
按钮事件
:param idx:
:return:
"""
global TEXT_str
# 打印按钮的 text 值
s = text_list[idx]
print("输入:", s)
if s != '=':
TEXT_str += s
# print(TEXT_str)
Entry_word.delete(0, tk.END)
Entry_word.insert(tk.END, TEXT_str)
else:
# 按下等号,调用求值函数
value_str = get_value()
TEXT_str = ''
Entry_word.delete(0, tk.END)
Entry_word.insert(tk.END, value_str)
# 放置按钮
key = 0
for i in range(1, 5):
for j in range(0, 4):
btn = tk.Button(root, text=text_list[key], width=10, height=2,
relief=tk.GROOVE, command=lambda idx=key:btn_command(idx))
btn.grid(row=i, column=j)
key += 1
root.mainloop()
if __name__ == "__main__":
main()