pythonGUI之简易计算器

4 篇文章 0 订阅
2 篇文章 1 订阅

库:tkinter

在这里插入图片描述
计算器组成很简单,由于刚学了Label,Button,Entry等主键,就忍不住想尝试一下。
思路很简单把各个键构建出来排好布局,在给各个Button写入函数。

对于输入计算内容python有很强大的字符串处理函数eval(). 等够把能够计算字符串内容提取出来计算。
例:

`str1='3+5*2
str2=eval(str1)

print(str1)
print(str2)
`
输出结果分别为
str1:3+5*2
str2:13

在布局方面要想主键跟随根窗口大小自动填充的话,可以设置跟窗口的属性
#跟随填充效果,就不会因为拖拽出现按键不移动而产生的空白区域,影响美观
`root=Tk()

root.rowconfigure(0,weight=1)

root.columnconfigure(0,weight=1)
`

from tkinter import *


#输入框纯数字验证
def test(content):
    return content.isdigit()

#加法按钮函数
def add():

    inputentry.insert(END,"+")

#减法按钮函数
def sub():
    inputentry.insert(END,"-")


#乘法函数
def multi():
    inputentry.insert(END,"*")

#除法函数
def division():
    inputentry.insert(END,"/")

#小数点
def point():
    inputentry.insert(END,".")

#复位函数
def empty():
    inputentry.delete(0,END)

#括号函数
def  bracket():
    inputentry.insert(END,"()")
#结果计算函数
def result():

    processshow.delete(0,END)
    processshow.insert(END,inputentry.get())
    str1=inputentry.get()
    str2=eval(str1)
    inputentry.delete(0,END)
    inputentry.insert(0,str2)



    
#main函数
root=Tk()

root.rowconfigure(0,weight=1)
root.columnconfigure(0,weight=1)
v=IntVar()
v1=StringVar()
root.title("计算器")

def test(content):
    return content.isdigit()

oneframe=Frame(root)
oneframe.grid()
oneframe.grid_propagate(flag=True)
testCMD=root.register(test)


processshow=Entry(oneframe,textvariable=v1,width=40,justify=RIGHT)
processshow.grid()
Label(oneframe,text="计算过程:").grid(row=0,sticky=W)

inputentry=Entry(oneframe,textvariable=v,width=40,justify=RIGHT)
inputentry.grid()
inputentry.delete(0,END)
Label(oneframe,text="计算内容:").grid(stick=W,row=1)


secondframe=Frame(root)
secondframe.grid()

#第一行功能按钮
Button(secondframe,text="+",command=add).grid(row=2,column=0,padx=5,pady=5,stick=W)
Button(secondframe,text="--",command=sub).grid(row=2,column=1,padx=5,pady=5)
Button(secondframe,text=".",command=point).grid(row=2,column=2,padx=5,pady=5)
Button(secondframe,text="C",command=empty).grid(row=2,column=3,padx=5,pady=5)

#第二行功能按钮
Button(secondframe,text="*",command=multi).grid(row=3,column=0,padx=5,pady=10,stick=W)
Button(secondframe,text="/",command=division).grid(row=3,column=1,padx=5,pady=10)
Button(secondframe,text="( )",command= bracket).grid(row=3,column=2,padx=10,pady=15)
Button(secondframe,text="=",command=result).grid(row=3,column=3,padx=15,pady=20)
mainloop()

以上。

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值