python tkinter实现简单计算器功能
作者:MrNoboday 发布时间:2022-06-16 22:34:09
标签:python,tkinter,计算器
本文实例为大家分享了python tkinter实现简单计算器的具体代码,供大家参考,具体内容如下
效果图
直接上代码
import tkinter as tk
input_num_ls = []
first_num = None
calculator_method = None
def get_num(ls):
new_ls = [10 ** i * float(num) for i, num in enumerate(ls)]
ls_sum = sum(new_ls)
if int(ls_sum) == ls_sum:
return int(ls_sum)
else:
return ls_sum
def append_num(num):
global input_num_ls
if len(num) < 10:
input_num_ls.append(num)
else:
input_num_ls.append(num[:10])
current_value.set(get_num(input_num_ls))
print(input_num_ls)
def append_calculator(method):
global input_num_ls, first_num, calculator_method
calculator_method = method
first_num = get_num(input_num_ls)
input_num_ls = []
print('method', calculator_method)
def calculator_result():
global first_num, input_num_ls, calculator_method
second_num = get_num(input_num_ls)
input_num_ls.clear()
if calculator_method == '+':
current_value.set(second_num + first_num)
input_num_ls.append(str(second_num + first_num))
elif calculator_method == '-':
current_value.set(first_num - second_num)
input_num_ls.append(str(first_num - second_num))
elif calculator_method == '*':
current_value.set(first_num * second_num)
input_num_ls.append(str(second_num * first_num))
elif calculator_method == '/':
current_value.set(first_num / second_num)
input_num_ls.append(str(first_num / second_num))
print(first_num, second_num, calculator_method)
def clear():
global first_num, input_num_ls, calculator_method
first_num = None
input_num_ls = []
calculator_method = None
current_value.set(0)
def func():
pass
# 主体窗口
window = tk.Tk()
# 设置窗口 标题
window.title('简易计算器')
# 设置窗口 宽高
window.geometry('400x300')
# 添加user显示屏幕背景
screen_area = tk.Frame(width='400', height='100', bg='#ddd')
# 放置到window中
screen_area.pack()
# 示例设置显示的数据类
current_value = tk.StringVar()
current_value.set(0)
# 数字显示框
# anchor 文本相对于标签中心的位置 默认是center N S W E
show_screen_label = tk.Label(screen_area, textvariable=current_value, bg='white', width='400', height='2', font={'黑体', 40, 'bold'}, anchor='e')
show_screen_label.pack(padx=10, pady=6)
# 按键区域
button_area = tk.Frame(width='300', height='300', bg='#ccc')
button_area.pack(padx=10, pady=5)
# 添加button
tk.Button(button_area, text='C', width='5', height='1', command=lambda: clear()).grid(row='1', column='0')
tk.Button(button_area, text='+', width='5', height='1', command=lambda: append_calculator('+')).grid(row='1', column='1')
tk.Button(button_area, text='-', width='5', height='1', command=lambda: append_calculator('-')).grid(row='1', column='2')
tk.Button(button_area, text='*', width='5', height='1', command=lambda: append_calculator('*')).grid(row='1', column='3')
tk.Button(button_area, text='7', width='5', height='1', command=lambda: append_num('7')).grid(row='2', column='0')
tk.Button(button_area, text='8', width='5', height='1', command=lambda: append_num('8')).grid(row='2', column='1')
tk.Button(button_area, text='9', width='5', height='1', command=lambda: append_num('9')).grid(row='2', column='2')
tk.Button(button_area, text='/', width='5', height='1', command=lambda: append_calculator('/')).grid(row='2', column='3')
tk.Button(button_area, text='4', width='5', height='1', command=lambda: append_num('4')).grid(row='3', column='0')
tk.Button(button_area, text='5', width='5', height='1', command=lambda: append_num('5')).grid(row='3', column='1')
tk.Button(button_area, text='6', width='5', height='1', command=lambda: append_num('6')).grid(row='3', column='2')
tk.Button(button_area, text='=', width='5', height='1', command=lambda: calculator_result()).grid(row='3', column='3')
tk.Button(button_area, text='1', width='5', height='1', command=lambda: append_num('1')).grid(row='4', column='0')
tk.Button(button_area, text='2', width='5', height='1', command=lambda: append_num('2')).grid(row='4', column='1')
tk.Button(button_area, text='3', width='5', height='1', command=lambda: append_num('3')).grid(row='4', column='2')
tk.Button(button_area, text='C', width='5', height='1', command=lambda: clear()).grid(row='4', column='3')
window.mainloop()
来源:https://blog.csdn.net/MrNoboday/article/details/90720553


猜你喜欢
- 01 前言&&效果展示相信大家都有忙碌的时候,不可能一直守在微信上及时回复消息。但微信又不能像QQ一样设置自动回
- 通常绘制二维曲线的时候可以使用matplotlib,不过如果电脑上安装了pandas的话可以直接使用Series的绘图方法进行图像的绘制。p
- Django 开发项目是很快的,有多快?看完本篇文章,你就知道了。安装 Django前提条件:已安装 Python。Django 使用 pi
- 最近在改一个嵌入在frame中的页面的时候,使用了jquery做效果,而页面本身也绑定了onload事件。改完后,Firefox下测试正常流
- 1、网页在加载时,页面代码中的js文件引用(如下)都会向服务器产生http请求,因为在body.onload事件之前加载的文件(这里我称之为
- 本文给大家分享了好几种复制表结构、表数据的示例介绍,具体详情请看下文吧。1、复制表结构及数据到新表CREATE TABLE 新表SELECT
- 本文实例讲述了Python高级编程之消息队列(Queue)与进程池(Pool)。分享给大家供大家参考,具体如下:Queue消息队列1.创建i
- 一、Oracle11g的安装过程(Windows版本)很简单,步骤为: 1. 首先从Oracl
- 方法1:cmd环境下,用pip install selenium可能会很慢方法2:下载selenium安装包手动安装下载地址:https:/
- 代码如下dat=['1', '2', '3', '0', '0
- 问题描述前端 vue 框架,后台 php,百度跨域问题后台加这段代码header("Access-Control-Allow-Or
- 查询mysql的操作信息show status -- 显示全部mysql操作信息show status like "com_ins
- 方法一:import osimport cv2 as cvimport numpy as np# 读取yuv420p的一帧文件,并转化为pn
- 动画效果如下:GIF看起来可能会有点卡wxml<view class="confirm bubble">确定
- 一、excel的内容二、效果三、需要用的库:openpyxlsmptlibemail.mime.textemail.header四、实现步骤
- 1.世界地图绘制演示先给大家看下效果图哈。① 世界地图数据准备地图数据如下:因为是世界地图,所以对标的国家,我设置了 2 组,里面的数据是随
- 前言前面我们已经将GO的环境安装好了,那么是否可以进行开发了呢?可以,但是为了能够更高效率的开发,我们还需要下载一个软件,该软件的作用就是方
- 如下所示:# -*- coding: UTF-8 -*-import numpy as npimport osfrom scipy.misc
- 具体代码如下所示:import osfrom PIL import ImageUNIT_SIZE = 220 # the size of i
- 1.MS SCRIPT ENCODE基本上没什么用了,一段JS就可以破解2.封装成DLL比较可行的方法,有通过VB封装成DLL的例子,而且无