电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python GUI模擬實現計算器

瀏覽:93日期:2022-07-19 18:49:23

python編寫計算器,供大家參考,具體內容如下

(1)計算器界面如下:

python GUI模擬實現計算器

(2)基本滿足了計算器的所有需求,使用時不可鍵盤輸入,只能鼠標點擊左鍵才可執行。初始時顯示0.0,每次輸入的內容存于D:num.txt(啟動程序時自動創建)

(3)' AC ' 記錄清零返回初始 0.0;' delete ' 刪除上一個輸入內容;' +/- ' 將正數為負數,負數為正數

(4)對于不同的進制數值系統,小數的精準值不同。因此計算機會出現 0.1+0.2=0.3000000000004 的現象能對數據進行截斷處理,可以解決問題,但精度喪失。(此計算機沒有進行截斷處理)

import tkinter,osfrom tkinter import *def temp(string):#空白間隔 temp=tkinter.Frame(string,width=20,height=50) temp.pack()flag=0node=0def num_work(): #更新顯示框Lable global flag global node with open('D:num.txt') as f: for length in f: string=length top_work.configure(text=string.strip(’n’)) # 重新設置標簽文本 root.after(500,num_work) # 每隔0.5s調用函數num_work自身獲取結果def num_math_int(num1,num2):#整數運算 try: if num2[0]==’+’: string=int(num1)+int(num2[1:]) elif num2[0]==’-’: string=int(num1)-int(num2[1:]) elif num2[0]==’x’: string=int(num1)*int(num2[1:]) elif num2[0]==’/’: string=int(num1)/int(num2[1:]) with open('D:num.txt',’a’) as f: f.write(’n’+str(string)+’n’) except: with open('D:num.txt',’a’) as f:f.write(’n錯誤’)def num_math_float(num1,num2):#小數運算 try: if num2[0]==’+’: string=float(num1)+float(num2[1:]) elif num2[0]==’-’: string=float(num1)-float(num2[1:]) elif num2[0]==’x’: string=float(num1)*float(num2[1:]) elif num2[0]==’/’: string=float(num1)/float(num2[1:]) if flag==0: with open('D:num.txt',’a’) as f:f.write(’n’+str(string)+’n’) else: with open('D:num.txt',’a’) as f:f.write(’n’+str(string)) except: with open('D:num.txt',’a’) as f:f.write(’n錯誤’)def decimal(num): if num.count(’%’)>0: num=num.replace(’%’,’’) num=num.replace(’n’,’’) if num.isnumeric(): num=str(float(num)/100) else: num=num[0]+str(float(num[1:])/100) return num def work(string):#按鍵對應的功能 if string.isnumeric(): with open('D:num.txt','a') as file: file.write(string) else: #讀取文件D:num.txt所有內容 lists=[] with open('D:num.txt','r') as file: for length in file:lists.append(length) if string==’AC’: with open('D:num.txt','w') as file:file.write(’0.0n’) elif string==’=’: num1=lists[-2] num2=lists[-1] if num1==’n’:#解決末尾為換行的情況num1=lists[-3] #將百分數小數化 #出現結果多0.0000000001 num1=decimal(num1) num2=decimal(num2) try: #判斷兩個數是整數還是小數number=int(num1)number=int(num2[1:])num_math_int(num1,num2)#兩個數進行整數運算 except:num_math_float(num1,num2)#兩個數進行小數運算 elif string==’.’: if lists[-1].count(’.’)==0:#判斷結尾是否有小數點,沒有寫入否則報錯with open('D:num.txt','a') as file: file.write(string) else:with open('D:num.txt','a') as file: file.write(’n錯誤’) elif string==’+/-’: if lists[-1].count(’-’)==0:#-+為-if lists[-1].count(’+’)==1: lists[-1]=lists[-1].replace(’+’,’’)lists[-1]=’-’+lists[-1] else: #--為+lists[-1]=lists[-1].replace(’-’,’+’) #更新文件 with open('D:num.txt','w') as file:pass for length in lists:with open('D:num.txt','a') as file: file.write(length) elif string==’delete’: number=lists[-1] lists[-1]=number[0:(len(number)-1)]#刪除一位 #更新文件 with open('D:num.txt','w') as file:pass for length in lists:with open('D:num.txt','a') as file: file.write(length) elif string==’%’: if lists[-1].endswith('%')==False:with open('D:num.txt','a') as file: file.write(string) else:with open('D:num.txt','a') as file: file.write(’n錯誤’) else: with open('D:num.txt','a') as file:file.write(’n’+string) def run():#計算器顯示界面主體 if os.path.exists('D:num.txt')==False: with open('D:num.txt',’w’) as f: f.write(’0.0n’)global root#定義全局變量root,方便Label更新 root=tkinter.Tk() root.title('計算器') #x = root.winfo_screenwidth() #獲取當前屏幕的寬 #y = root.winfo_screenheight() #獲取當前屏幕的高 #print(((x-500)//2),((y-600)//2))#為居中提供的參數 root.geometry(’400x500+760+290’)#主體長400,高500,居中 top=tkinter.Frame(root,width=20,height=50) top.pack() global top_work#定義全局變量root temp(top)#空白間隔 #計算器顯示框 top_work=tkinter.Label(top,text=’’,justify=’left’,relief=SUNKEN,bd=10,bg=’white’,width=40) top_work.pack(side=’bottom’)#計算器顯示框(位置居下) num_work() temp(root)#空白間隔 number=tkinter.Frame(root)#成放計算機鍵盤的容器 number.pack() #所有按鍵,AC鍵為事例 numberAC=tkinter.Button(number,text='AC',width=10,command=lambda : work(’AC’)).grid(row=0,column=0) #左鍵點擊,執行函數work #按鍵位置(0,0) numberdelete=tkinter.Button(number,text='delete',width=10,command=lambda : work(’delete’)).grid(row=0,column=1) numberzhengfu=tkinter.Button(number,text='+/-',width=10,command=lambda : work(’+/-’)).grid(row=0,column=2) numberchu=tkinter.Button(number,text='/',width=10,command=lambda : work(’/’)).grid(row=0,column=3) tkinter.Button(number,text='7',width=10,command=lambda : work(’7’)).grid(row=1,column=0) tkinter.Button(number,text='8',width=10,command=lambda : work(’8’)).grid(row=1,column=1) tkinter.Button(number,text='9',width=10,command=lambda : work(’9’)).grid(row=1,column=2) tkinter.Button(number,text='x',width=10,command=lambda : work(’x’)).grid(row=1,column=3) tkinter.Button(number,text='4',width=10,command=lambda : work(’4’)).grid(row=2,column=0) tkinter.Button(number,text='5',width=10,command=lambda : work(’5’)).grid(row=2,column=1) tkinter.Button(number,text='6',width=10,command=lambda : work(’6’)).grid(row=2,column=2) tkinter.Button(number,text='-',width=10,command=lambda : work(’-’)).grid(row=2,column=3) tkinter.Button(number,text='1',width=10,command=lambda : work(’1’)).grid(row=3,column=0) tkinter.Button(number,text='2',width=10,command=lambda : work(’2’)).grid(row=3,column=1) tkinter.Button(number,text='3',width=10,command=lambda : work(’3’)).grid(row=3,column=2) tkinter.Button(number,text='+',width=10,command=lambda : work(’+’)).grid(row=3,column=3) tkinter.Button(number,text='%',width=10,command=lambda : work(’%’)).grid(row=4,column=0) tkinter.Button(number,text='0',width=10,command=lambda : work(’0’)).grid(row=4,column=1) tkinter.Button(number,text='.',width=10,command=lambda : work(’.’)).grid(row=4,column=2) tkinter.Button(number,text='=',width=10,command=lambda : work(’=’)).grid(row=4,column=3) root.mainloop()if __name__==’__main__’: run()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 全自动包装机_灌装机生产厂家-迈驰包装设备有限公司 | 搜活动房网—活动房_集装箱活动房_集成房屋_活动房屋 | 辐射仪|辐射检测仪|辐射巡测仪|个人剂量报警仪|表面污染检测仪|辐射报警仪|辐射防护网 | LED灯杆屏_LED广告机_户外LED广告机_智慧灯杆_智慧路灯-太龙智显科技(深圳)有限公司 | 展厅设计-展馆设计-专业企业展厅展馆设计公司-昆明华文创意 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 广东燎了网络科技有限公司官网-网站建设-珠海网络推广-高端营销型外贸网站建设-珠海专业h5建站公司「了了网」 | 东亚液氮罐-液氮生物容器-乐山市东亚机电工贸有限公司 | 不锈钢/气体/液体玻璃转子流量计(防腐,选型,规格)-常州天晟热工仪表有限公司【官网】 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 面粉仓_储酒罐_不锈钢储酒罐厂家-泰安鑫佳机械制造有限公司 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 超声波成孔成槽质量检测仪-压浆机-桥梁预应力智能张拉设备-上海硕冠检测设备有限公司 | 自清洗过滤器-全自动自清洗过反冲洗过滤器 - 中乂(北京)科技有限公司 | 原色会计-合肥注册公司_合肥代理记账公司_营业执照代办 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | 郑州水质检测中心_井水检测_河南废气检测_河南中环嘉创检测 | 上海赞永| 能耗监测系统-节能监测系统-能源管理系统-三水智能化 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 济南网站策划设计_自适应网站制作_H5企业网站搭建_济南外贸网站制作公司_锐尚 | 转向助力泵/水泵/发电机皮带轮生产厂家-锦州华一精工有限公司 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 | 六维力传感器_三维力传感器_二维力传感器-南京神源生智能科技有限公司 | 振动时效_振动时效仪_超声波冲击设备-济南驰奥机电设备有限公司 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 写方案网_方案策划方案模板下载| 氟氨基酮、氯硝柳胺、2-氟苯甲酸、异香兰素-新晨化工 | 全自动翻转振荡器-浸出式水平振荡器厂家-土壤干燥箱价格-常州普天仪器 | 诚暄电子公司首页-线路板打样,pcb线路板打样加工制作厂家 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 回转窑-水泥|石灰|冶金-巩义市瑞光金属制品有限责任公司 | 注浆压力变送器-高温熔体传感器-矿用压力传感器|ZHYQ朝辉 | 天品互联-北京APP开发公司-小程序开发制作-软件开发 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 |