色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

python GUI模擬實現計算器

瀏覽:71日期: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 編程
相關文章:
主站蜘蛛池模板: 久久久久久99精品 | 亚洲国产影视 | 欧美日韩一区二区中文字幕视频 | 亚洲性影院 | 香蕉久久夜色精品国产尤物 | 国产成人精品免费视频软件 | 日韩精品久久一区二区三区 | 亚洲高清一区二区三区 | 久久精品国产精品青草色艺 | 日韩亚洲国产综合久久久 | 国产三级午夜理伦三级 | 一个人免费看的www 一及 片日本 | 久久不色 | 精品视频在线观看一区二区三区 | 国内高清久久久久久久久 | 亚洲国产欧美自拍 | 久久国产精品影院 | yy6080久久亚洲精品 | 亚洲国产精品一区二区久 | 成人入口 | 丁香狠狠色婷婷久久综合 | 亚洲一区欧美 | 欧美毛片网站 | 九色愉拍自拍 | 午夜毛片不卡高清免费 | 精品视频一区二区 | 精品日本一区二区三区在线观看 | 欧美日韩国产综合一区二区三区 | 久久男人的天堂色偷偷 | 秀人网私拍福利视频在线 | 亚洲国产一区二区a毛片日本 | 久久99久久精品国产只有 | 中国一级毛片在线观看 | 506rr亚洲欧美 | 亚洲精品综合欧美一区二区三区 | 日本人一级毛片免费视频 | 国产一级一级毛片 | 久久亚洲精品中文字幕三区 | 欧美一级黄色毛片 | 国产美女作爱视频 | 成人久久18免费网站游戏 |