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

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

 更新時間:2020年10月09日 14:45:59   作者:叫我龍總  
這篇文章主要介紹了python gui計算器的實現(xiàn),幫助大家更好的理解和學習python gui編程,感興趣的朋友可以了解下

01 實現(xiàn)

我們幾乎每個人都用過計算器,大家對于計算器應該都是比較熟悉的,計算器整體也是比較簡單的,主要包括:顯示器、鍵盤、運算的邏輯處理等,計算器的圖形界面我們使用 tkinter 庫實現(xiàn),下面看一下具體實現(xiàn)過程。

首先,我們畫一個主窗口,代碼實現(xiàn)如下:

# 創(chuàng)建主窗口
tk = tkinter.Tk()
# 設置窗口大小和位置
tk.geometry('300x210+500+200')
# 不允許改變窗口大小
tk.resizable(False, False)
# 設置窗口標題
tk.title('計算器')

看一下效果:

我們接著畫顯示器,代碼實現(xiàn)如下:

# 自動刷新字符串變量,可用 set 和 get 方法進行傳值和取值
contentVar = tkinter.StringVar(tk, '')
# 創(chuàng)建單行文本框
contentEntry = tkinter.Entry(tk, textvariable=contentVar)
# 設置文本框為只讀
contentEntry['state'] = 'readonly'
# 設置文本框坐標及寬高
contentEntry.place(x=20, y=10, width=260, height=30)

看一下效果:

再接著畫鍵盤,代碼實現(xiàn)如下:

# 按鈕顯示內(nèi)容
bvalue = ['C', '+', '-', '//', '2', '0', '1', '√', '3', '4', '5', '*', '6', '7', '8', '.', '9', '/', '**', '=']
index = 0
# 將按鈕進行 5x4 放置
for row in range(5):
  for col in range(4):
    d = bvalue[index]
    index += 1
    btnDigit = tkinter.Button(tk, text=d, command=lambda x=d: onclick(x))
    btnDigit.place(x=20 + col * 70, y=50 + row * 30, width=50, height=20)

看一下效果:

界面畫完了,我們看一下處理運算邏輯的代碼,如下所示:

# 點擊事件
def onclick(btn):
  # 運算符
  operation = ('+', '-', '*', '/', '**', '//')
  # 獲取文本框中的內(nèi)容
  content = contentVar.get()
  # 如果已有內(nèi)容是以小數(shù)點開頭的,在前面加 0
  if content.startswith('.'):
    content = '0' + content # 字符串可以直接用+來增加字符
  # 根據(jù)不同的按鈕作出不同的反應
  if btn in '0123456789':
    # 按下 0-9 在 content 中追加
    content += btn
  elif btn == '.':
    # 將 content 從 +-*/ 這些字符的地方分割開來
    lastPart = re.split(r'\+|-|\*|/', content)[-1]
    if '.' in lastPart:
      # 信息提示對話框
      tkinter.messagebox.showerror('錯誤', '重復出現(xiàn)的小數(shù)點')
      return
    else:
      content += btn
  elif btn == 'C':
    # 清除文本框
    content = ''
  elif btn == '=':
    try:
      # 對輸入的表達式求值
      content = str(eval(content))
    except:
      tkinter.messagebox.showerror('錯誤', '表達式有誤')
      return
  elif btn in operation:
    if content.endswith(operation):
      tkinter.messagebox.showerror('錯誤', '不允許存在連續(xù)運算符')
      return
    content += btn
  elif btn == '√':
    # 從 . 處分割存入 n,n 是一個列表
    n = content.split('.')
    # 如果列表中所有的都是數(shù)字,就是為了檢查表達式是不是正確的
    if all(map(lambda x: x.isdigit(), n)):
      content = eval(content) ** 0.5
    else:
      tkinter.messagebox.showerror('錯誤', '表達式錯誤')
      return
  # 將結(jié)果顯示到文本框中
  contentVar.set(content)

整體實現(xiàn)完了之后,我們來演示一下,看一下效果:

是不是有內(nèi)味了。

02 打包

為了更加方便的使用,我們可以將 Python 代碼打包成 exe 文件,打包我們使用 pyinstaller,安裝用 pip install pyinstaller 命令即可。

打包時我們使用 pyinstaller --onefile --nowindowed counter.py 命令即可,此時打包生成的文件是使用的默認圖標,如果我們想指定自己的圖標可以添加參數(shù) --icon="xxx\xxx.ico",打包生成的文件在 dist 目錄。

如下圖所示:

此時,我們直接運行 exe 文件就行了。

03 總結(jié)

本文我們使用 Python 實現(xiàn)了一個簡易的計算器,大家如果有興趣的話,可以嘗試添加更多的功能以及對鍵盤進行個性化修改。

以上就是python GUI計算器的實現(xiàn)的詳細內(nèi)容,更多關(guān)于python 計算器的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python except異常處理之后不退出,解決異常繼續(xù)執(zhí)行的實現(xiàn)

    python except異常處理之后不退出,解決異常繼續(xù)執(zhí)行的實現(xiàn)

    這篇文章主要介紹了python except異常處理之后不退出,解決異常繼續(xù)執(zhí)行的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python中__str__()方法的實用技巧分享

    Python中__str__()方法的實用技巧分享

    在Python編程中,__str__()是一個特殊方法,它允許自定義對象的字符串表示形式,本文將深入探討__str__()的相關(guān)實用技巧,希望對大家有所幫助
    2023-11-11
  • Python如何輸出警告信息

    Python如何輸出警告信息

    這篇文章主要介紹了Python如何輸出警告信息,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • python如何在循環(huán)引用中管理內(nèi)存

    python如何在循環(huán)引用中管理內(nèi)存

    這篇文章主要為大家詳細介紹了python如何在循環(huán)引用中管理內(nèi)存,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python eventlet綠化和patch原理

    python eventlet綠化和patch原理

    這篇文章主要介紹了python eventlet綠化和patch原理,幫助大家更好的理解和學習python eventlet工具的使用,感興趣的朋友可以了解下
    2020-11-11
  • python中精確的浮點數(shù)運算示例

    python中精確的浮點數(shù)運算示例

    這篇文章主要為大家介紹了python中精確的浮點數(shù)運算示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • python 進程的幾種創(chuàng)建方式詳解

    python 進程的幾種創(chuàng)建方式詳解

    這篇文章主要介紹了python 進程的幾種創(chuàng)建方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Python批處理刪除和重命名文件夾的實例

    Python批處理刪除和重命名文件夾的實例

    今天小編就為大家分享一篇Python批處理刪除和重命名文件夾的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python中Django文件上傳方法詳解

    python中Django文件上傳方法詳解

    在本篇文章里小編給大家整理了一篇關(guān)于python中Django文件上傳方法,有興趣的朋友們可以學習下。
    2020-08-08
  • pytorch DataLoaderj基本使用方法詳解

    pytorch DataLoaderj基本使用方法詳解

    這篇文章主要為大家介紹了pytorch DataLoaderj基本使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04

最新評論

东海县| 上林县| 东海县| 资源县| 游戏| 香格里拉县| 冷水江市| 武隆县| 兴山县| 潮州市| 璧山县| 巫溪县| 新安县| 雷波县| 彰化市| 鄂托克前旗| 宜兰市| 巫溪县| 丹东市| 通道| 吴堡县| 嫩江县| 根河市| 吉林市| 中超| 千阳县| 鄄城县| 专栏| 河源市| 昌乐县| 陵川县| 琼海市| 高邮市| 凤冈县| 洪江市| 平阴县| 彰化县| 巴林左旗| 比如县| 洪洞县| 宾阳县|