最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python GUI模擬實現(xiàn)計算器

 更新時間:2020年06月22日 11:14:16   作者:sea_kingdom  
這篇文章主要為大家詳細介紹了python GUI模擬實現(xiàn)計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

python編寫計算器,供大家參考,具體內(nèi)容如下

(1)計算器界面如下:

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

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

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

import tkinter,os
from tkinter import *

def temp(string):#空白間隔
  temp=tkinter.Frame(string,width=20,height=50)
  temp.pack()

flag=0
node=0
def 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調用函數(shù)num_work自身獲取結果

def num_math_int(num1,num2):#整數(shù)運算
  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):#小數(shù)運算
  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所有內(nèi)容
    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.0\n')
        
    elif string=='=':
      num1=lists[-2]
      num2=lists[-1]
      if num1=='\n':#解決末尾為換行的情況
        num1=lists[-3]
        
      #將百分數(shù)小數(shù)化
      #出現(xiàn)結果多0.0000000001
      num1=decimal(num1)
      num2=decimal(num2)
        
      try:      #判斷兩個數(shù)是整數(shù)還是小數(shù)
        number=int(num1)
        number=int(num2[1:])
        num_math_int(num1,num2)#兩個數(shù)進行整數(shù)運算
      except:
        num_math_float(num1,num2)#兩個數(shù)進行小數(shù)運算
        
    elif string=='.':
      if lists[-1].count('.')==0:#判斷結尾是否有小數(shù)點,沒有寫入否則報錯
        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.0\n')
      
  global root#定義全局變量root,方便Label更新
  root=tkinter.Tk()
  root.title("計算器")
  
  #x = root.winfo_screenwidth()
  #獲取當前屏幕的寬
  #y = root.winfo_screenheight()
  #獲取當前屏幕的高
  #print(((x-500)//2),((y-600)//2))#為居中提供的參數(shù)
  
  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)
  #左鍵點擊,執(zhí)行函數(shù)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()

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python實現(xiàn)簡單猜數(shù)字游戲

    Python實現(xiàn)簡單猜數(shù)字游戲

    這篇文章主要為大家詳細介紹了Python實現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • python實現(xiàn)鍵盤輸入的實操方法

    python實現(xiàn)鍵盤輸入的實操方法

    在本篇文章里小編給各位分享了關于python怎么實現(xiàn)鍵盤輸入的圖文步驟以及相關知識點內(nèi)容,需要的朋友們參考下。
    2019-07-07
  • python操作mysql中文顯示亂碼的解決方法

    python操作mysql中文顯示亂碼的解決方法

    這篇文章主要介紹了python操作mysql中文顯示亂碼的解決方法,是Python數(shù)據(jù)庫程序設計中經(jīng)常會遇到的問題,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • Python爬蟲爬取愛奇藝電影片庫首頁的實例代碼

    Python爬蟲爬取愛奇藝電影片庫首頁的實例代碼

    這篇文章主要介紹了Python爬蟲爬取愛奇藝電影片庫首頁的實例代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • 帶你了解Python妙開根號的三種方式

    帶你了解Python妙開根號的三種方式

    這篇文章主要為大家介紹了Python妙開根號的三種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 如何利用python實現(xiàn)windows的批處理及文件夾操作

    如何利用python實現(xiàn)windows的批處理及文件夾操作

    最近工作中需要幾個腳本運行其他程序,幾乎像一個Windows批處理文件,這篇文章主要給大家介紹了關于如何利用python實現(xiàn)windows的批處理及文件夾操作的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • python中wheel的用法整理

    python中wheel的用法整理

    在本篇文章里小編給大家整理的是關于python中wheel的用法整理內(nèi)容,需要的朋友們可以跟著學習下。
    2020-06-06
  • python實現(xiàn)將excel文件轉化成CSV格式

    python實現(xiàn)將excel文件轉化成CSV格式

    下面小編就為大家分享一篇python實現(xiàn)將excel文件轉化成CSV格式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • python3.6+selenium實現(xiàn)操作Frame中的頁面元素

    python3.6+selenium實現(xiàn)操作Frame中的頁面元素

    這篇文章主要為大家詳細介紹了python3.6+selenium實現(xiàn)操作Frame中的頁面元素,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python3.6.2調用ffmpeg的方法

    Python3.6.2調用ffmpeg的方法

    今天小編就為大家分享一篇Python3.6.2調用ffmpeg的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01

最新評論

华坪县| 三门县| 昆山市| 佛教| 万盛区| 铜梁县| 禹城市| 自治县| 嵊州市| 彭阳县| 乌拉特中旗| 彰化县| 万全县| 五台县| 东丰县| 江西省| 中方县| 富锦市| 栾川县| 商河县| 济阳县| 化隆| 高雄市| 利辛县| 苍山县| 泗阳县| 阿荣旗| 略阳县| 永福县| 新密市| 张家港市| 柞水县| 宁乡县| 林口县| 青铜峡市| 平阴县| 安宁市| 抚远县| 漯河市| 景东| 沙洋县|