当前位置: 首页 > news >正文

在兄弟连学Python Python项目计算器

from tkinter import *
root = Tk()
root.geometry('250x380')
root.title('1.0版本计算器')
frame_show = Frame(width=300,height=150,bg='#dddddd')

#顶部区域

v = StringVar()
v.set('0')
show_label = Label(frame_show,textvariable =v, bg = 'white',width=12,height=1,font=("黑体", 20, "bold"),justify=LEFT,anchor='e')
show_label.pack(padx = 10,pady = 10)
frame_show.pack()

#是否按下了运算符
isopear = False

#操作序列
calc = []
def change(num):
    global isopear
    if isopear == False:
        if v.get() == '0':
            v.set('')
            v.set(num)
        else:
            v.set(v.get()+num)
    else: 
        v.set(num)
        isopear = False

#运算
def operation(sign):
    global isopear
    global calc
    isopear = True
    calc.append(v.get())
    if sign == '+':
        calc.append('+')
    elif sign == '-':
        calc.append('-')
    elif sign == '*':
        calc.append('*')
    elif sign == '/':
        calc.append('/')
    print(calc)

def equal():
    global calc
    #获取当前界面的数值准备运算
    calc.append(v.get())
    print(calc)
    #组成运算字符串
    calcstr = ''.join(calc)
    #检测最后一位是否是运算符,是就删除
    if calcstr[-1] in '+-*/':
        calcstr = calcstr[0:-1]
    #print(calcstr)
    #运算操作
    result = eval(calcstr)
    #显示结果
    v.set(result)
    calc.clear()

#删除操作
def delete():
    if v.get() == '' or v.get() == '0':
        v.set('0')
        return
    else:
        num = len(v.get())
        if num > 1:
            strnum = v.get()
            strnum = strnum[0:num-1]
            v.set(strnum)
        else:
            v.set('0')

#清空操作
def clear():
    global calc
    calc = []
    v.set('0')
    isopear = False

#正负操作
def fan():
    strnum = v.get()
    if strnum[0] == '-':
        v.set(strnum[1:])
    elif strnum[0] != '-' and strnum != '0' :
        v.set('-'+strnum)

#按键区域
frame_bord = Frame(width=400,height=350,bg='#cccccc')
button_del = Button(frame_bord,text = '',width = 5,height =1,command = delete).grid(row = 0,column = 0)
button_clear = Button(frame_bord,text = 'C',width = 5,height =1,command = clear).grid(row = 0,column = 1)
button_fan = Button(frame_bord,text = '±',width = 5,height =1,command = fan).grid(row = 0,column = 2)
button_ce = Button(frame_bord,text = 'CE',width = 5,height =1,command = clear).grid(row = 0,column = 3)
button_1 = Button(frame_bord,text = '1',width = 5,height =2,command = lambda:change('1')).grid(row = 1,column = 0)
button_2 = Button(frame_bord,text = '2',width = 5,height =2,command = lambda:change('2')).grid(row = 1,column = 1)
button_3 = Button(frame_bord,text = '3',width = 5,height =2,command = lambda:change('3')).grid(row = 1,column = 2)
button_jia = Button(frame_bord,text = '+',width = 5,height =2,command = lambda:operation('+')).grid(row = 1,column = 3)
button_4 = Button(frame_bord,text = '4',width = 5,height =2,command = lambda:change('4')).grid(row = 2,column = 0)
button_5 = Button(frame_bord,text = '5',width = 5,height =2,command = lambda:change('5')).grid(row = 2,column = 1)
button_6 = Button(frame_bord,text = '6',width = 5,height =2,command = lambda:change('6')).grid(row = 2,column = 2)
button_jian = Button(frame_bord,text = '-',width = 5,height =2,command = lambda:operation('-')).grid(row = 2,column = 3)
button_7 = Button(frame_bord,text = '7',width = 5,height =2,command = lambda:change('7')).grid(row = 3,column = 0)
button_8 = Button(frame_bord,text = '8',width = 5,height =2,command = lambda:change('8')).grid(row = 3,column = 1)
button_9 = Button(frame_bord,text = '9',width = 5,height =2,command = lambda:change('9')).grid(row = 3,column = 2)
button_cheng = Button(frame_bord,text = 'x',width = 5,height =2,command = lambda:operation('*')).grid(row = 3,column = 3)
button_0 = Button(frame_bord,text = '0',width = 5,height =2,command = lambda:change('0')).grid(row = 4,column = 0)
button_dian = Button(frame_bord,text = '.',width = 5,height =2,command = lambda:change('.')).grid(row = 4,column = 1)
button_deng = Button(frame_bord,text = '=',width = 5,height =2,command = equal).grid(row = 4,column = 2)
button_chu = Button(frame_bord,text = '/',width = 5,height =2,command = lambda:operation('/')).grid(row = 4,column = 3)
button_auther = Button(frame_bord,text = '查看作者',width = 25,height =2,command = lambda: print('He was a vigorous, handsome young man')).grid(row = 5,column = 0,columnspan=4)
frame_bord.pack(padx = 10,pady = 10)

#底部区域
frame_bottom = Frame(width=400,height=20,bg='black')
bottom_label = Label(frame_bottom,text = 'power by 丛浩',bg='yellow',width=25,height = 1,padx=0)
bottom_label.pack()
frame_bottom.pack()
root.mainloop()

 

转载于:https://www.cnblogs.com/kakade/p/8099971.html

相关文章:

  • 用PLSQL Developer 查看连接因子 tnsnames.ora
  • 个人作业——软件工程实践总结作业
  • 2008nian元旦
  • display字段导致textbox的字段不显示
  • 探索Python F-strings是如何工作
  • linux下的SSH服务
  • XXE攻击
  • 2017面向对象程序设计(JAVA)课程总结
  • 带环链表 linked list cycle
  • php重写路由
  • 团队冲刺第二周02
  • BZOJ2720: [Violet 5]列队春游
  • python实现购物车
  • Elasticsearch 聚合字段后 获取聚合字段的单条详细信息
  • 微信跳一跳 (亲测可用)
  • Java-详解HashMap
  • leetcode386. Lexicographical Numbers
  • Mysql数据库的条件查询语句
  • MySQL主从复制读写分离及奇怪的问题
  • Redis在Web项目中的应用与实践
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • V4L2视频输入框架概述
  • vue.js框架原理浅析
  • Vue小说阅读器(仿追书神器)
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 爬虫模拟登陆 SegmentFault
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 中文输入法与React文本输入框的问题与解决方案
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # 飞书APP集成平台-数字化落地
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #QT(一种朴素的计算器实现方法)
  • #图像处理
  • (补)B+树一些思想
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (分类)KNN算法- 参数调优
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • .NET CF命令行调试器MDbg入门(一)
  • .NetCore 如何动态路由
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @31省区市高考时间表来了,祝考试成功
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [145] 二叉树的后序遍历 js
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [Django 0-1] Core.Handlers 模块
  • [ICCV2017]Neural Person Search Machines
  • [Linux_IMX6ULL驱动开发]-基础驱动
  • [Luogu P3527BZOJ 2527][Poi2011]Meteors(整体二分+BIT)
  • [MySQL]基础的增删改查