python 一个简单的计算器

column:      对应的放置的所在的列序号

columnspan:  表示该组件需要横跨多少列

row:         对应的放置的所在的行序号

rowspan:     表示组件需要横跨多少行

ipadx:       需要注意,这个参数表示x方向的内部填充,即以内部颜色为标准向左右方向扩展

ipady:       同上

padx:        这个是表示x方向的外部填充

pady:        同上

from tkinter import *#引入tkinter,类比于java中的gui的swing
reset=True #原有的索引列重置索引,不再另外添加新列
def buttonCallBack(event):
    global label#global语句可以起到声明变量作用域,全局函数
    global reset
    num=event.widget['text']#widget(部件)+event(事件的响应)
    if num=='C':
        label['text']="0"
        return#后面没有参数,返回None
    if num in "=":
        label['text']=str(eval(label['text']))#eval() 函数用来执行一个字符串表达式,并返回表达式的值。
        reset=True
        return 
    s=label['text']
    if s=='0' or reset==True:
        s=""
        reset=False
    label['text']=s+num
#主窗口
root=Tk()#创建界面
root.wm_title("弱智计算器")
#显示栏1
label=Label(root,text="0",background="white",anchor="w")#数值的显示框 anchor 抛锚的锚对齐方式,左对齐”w”,右对齐”e”,顶对齐”n”,底对齐”s”
label['width']=35
label['height']=2
label.grid(row=1,columnspan=4,sticky="s")#grid管理器是Tkinter里面最灵活的几何管理布局器 columnspan元素横跨的列数
###默认的空间会在网格中居中显示。你可以使用sticky选项去指定对齐方式,可以选择的值有:N/S/E/W,分别代表上/下/左/右。如果你想让label靠左显示,你可以设置stricky的值为W。
showText="789/456*123-0.C+"
for i in range(4):
    for j in range(4):
        b=Button(root,text=showText[i*4+j],width=7)
        b.grid(row=i+2,column=j)#cloumn插件放置的列数列
        b.bind("<Button-1>",buttonCallBack)#<Button-1>是鼠标左键单击,buttonCallBack反调函数值
showText="()"
for i in range(2):
    b=Button(root,text=showText[i],width=7)
    b.grid(row=6,column=2+i)
    b.bind("<Button-1>",buttonCallBack)
b=Button(root,text="=")
b.grid(row=6,columnspan=2,sticky="we")
b.bind("<Button-1>",buttonCallBack)
root.mainloop()#主事件循环

效果图:

发布了42 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_39395805/article/details/100120214