python编程简易计算器_Python--Tkinter项目-----简易计算器

本文介绍了一个使用Python和Tkinter库构建的经典计算器项目。代码通过字符串操作实现了数字输入、删除、清空等基本功能,并能进行加减乘除运算。在处理全局变量时遇到了问题,通过使用`global`关键字解决了在函数中修改全局变量的错误。
摘要由CSDN通过智能技术生成

经典项目----计算器,这个代码仅实现了两数操作,但是部分功能已经具备,比如删除单个字符,采用的是字符串分片来操作的,清空,则直接改变显示器的数字;在做的过程中本以为要把每个数字进行×10算法才可以进行计算,之后才想到Python可以使用强制转换来直接把字符串转化为int类型来进行运算;在删除操作时,引用了一个变量l,来辅助删除;开发过程中遇到了一个小问题,就是在函数中修改全局变量时报错,报错信息如下 local variable 'num1' referenced before assignment ,因为要想在函数里面改变全局变量的值,需要在函数里面使用global声明变量为全局变量,比如:global num1,问题得到了解决。

不多说了,附上代码

from tkinter import*

root = Tk()

#设置窗口的长宽

#注意:300x380 ,其中的x就是英文字母x

root.geometry('300x380')

#设置窗口的标题

root.title("计算器")

#定义面板

frame_show = Frame(width=300, height=150, bg="#dddddd")

frame_show.pack()

#定义顶部区域

sv = StringVar() #prthon内定义函数,作用是使字符串显示在指定控件上

sv.set('0') #设置字符串

#定义显示字符串的标签,justify设置字符串对齐方式,anchor设置控件的锚点(东南西北)

show_label = Label(frame_show, textvariable=sv, bg='white', width=12, height=1, font=("黑体", 20, 'bold'),\

justify=LEFT, anchor='e')

show_label.pack(padx=10, pady=10)

#按键区

num1 = ''

num2 = ''

operator = None

l = '' #定义了一个字符串,里面包含运算符和第二个数,目的是方便deldte()使用

def delete():

global num1

global num2

global operator

global l;

if operator == None:

num1 = num1[:-1]#利用切片法删除最后一个字符串

sv.set(num1)

else:

l = l[:-1]

if(l ==''):

operator = None

sv.set(num1+l)

def clear():

global num1

global num2

global operator

num1 = ''

num2 = ''

operator = None

sv.set('0')

def fan():

global num1

global num2

global operator

def ce():

global num1

global num2

global operator

def change(num):

global num1

global num2

global operator

global l

if operator == None:

num1 = num1 + num

sv.set(num1)

else:

num2 = num2 + num

l = operator + num2

sv.set(num1+operator+num2)

def operation(op):

global operator

if op in ['+','-','x','/']:

operator = op

else:

if operator == '+':

sv.set(int(num1)+int(num2))

if operator == '-':

sv.set(int(num1)-int(num2))

if operator == 'x':

sv.set(int(num1)*int(num2))

if operator == '/':

sv.set(int(num1)/int(num2))

#定义第二个面板

frame_bord = Frame(width=300, height=350, bg="#cccccc")

b_del = Button(frame_bord, text="←", width=5, height=1, command=delete)

b_del.grid(row=0, column=0)#网格布局

#设计功能键

b_clear = Button(frame_bord, text="C", width=5, height=1, command=clear)

b_clear.grid(row=0, column=1)

b_fan = Button(frame_bord, text="±", width=5, height=1, command=fan)

b_fan.grid(row=0, column=2)

b_ce = Button(frame_bord, text="CE", width=5, height=1, command=ce)

b_ce.grid(row=0, column=3)

#设计数字键

b_1 = Button(frame_bord, text="1", width=5, height=2,command=lambda:change("1")).grid(row=1, column=0)

b_2 = Button(frame_bord, text="2", width=5, height=2,command=lambda:change("2")).grid(row=1, column=1)

b_3 = Button(frame_bord, text="3", width=5, height=2,command=lambda:change("3")).grid(row=1, column=2)

b_4 = Button(frame_bord, text="4", width=5, height=2,command=lambda:change("4")).grid(row=1, column=3)

b_5 = Button(frame_bord, text="5", width=5, height=2,command=lambda:change("5")).grid(row=2, column=0)

b_6 = Button(frame_bord, text="6", width=5, height=2,command=lambda:change("6")).grid(row=2, column=1)

b_7 = Button(frame_bord, text="7", width=5, height=2,command=lambda:change("7")).grid(row=2, column=2)

b_8 = Button(frame_bord, text="8", width=5, height=2,command=lambda:change("8")).grid(row=2, column=3)

b_9 = Button(frame_bord, text="9", width=5, height=2,command=lambda:change("9")).grid(row=3, column=0)

b_0 = Button(frame_bord, text="0", width=5, height=2,command=lambda:change("0")).grid(row=3, column=1)

#运算符号

b_jia = Button(frame_bord, text="+", width=5, height=2,command=lambda:operation("+")).grid(row=3, column=2)

b_jian = Button(frame_bord, text="-", width=5, height=2,command=lambda:operation("-")).grid(row=3, column=3)

b_cheng = Button(frame_bord, text="x", width=5, height=2,command=lambda:operation("x")).grid(row=4, column=0)

b_chu = Button(frame_bord, text="/", width=5, height=2,command=lambda:operation("/")).grid(row=4, column=1)

b_deng = Button(frame_bord, text="=", width=5, height=2,command=lambda:operation("=")).grid(row=4, column=2)

frame_bord.pack(padx=10, pady=10)

root.mainloop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python计算栅格平均值,可以使用ArcPy库中的GetRasterProperties_management函数。首先,设置工作空间和栅格数据的路径。然后,使用GetRasterProperties_management函数获取栅格数据的平均值。以下是一个示例代码: ```python import arcpy from arcpy import env # 设置工作空间和栅格数据路径 env.workspace = r"C:\Users\HP\Desktop\20210323\tweets.gdb" raster_path = r"C:\Users\HP\Desktop\20210323\tweets.gdb\temp_DACA_KDE" # 使用GetRasterProperties_management函数获取栅格数据的平均值 meanValueInfo = arcpy.GetRasterProperties_management(raster_path, 'MEAN') meanValue = float(meanValueInfo.getOutput(0)) # 打印平均值 print("栅格数据的平均值为:" + str(meanValue)) ``` 请注意,你需要将代码中的工作空间路径和栅格数据路径替换为你自己的路径。 #### 引用[.reference_title] - *1* [arcGIS python求取栅格数据的平均值。](https://blog.csdn.net/gognzixiaobai666/article/details/115127555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python批量处理MODIS栅格影像数据——求均值、总和与最大最小值](https://blog.csdn.net/qq_43874102/article/details/124256877)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值