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

Python實現(xiàn)圖形用戶界面計算器

 更新時間:2022年07月21日 15:54:17   作者:Yvonnae  
這篇文章主要為大家詳細介紹了Python實現(xiàn)圖形用戶界面計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Python實現(xiàn)圖形用戶界面計算器的具體代碼,供大家參考,具體內(nèi)容如下

簡易用戶圖形界面計算器設(shè)計思路:

簡易圖形用戶界面計算器的界面和功能設(shè)計如下:

(1)第一行顯示輸入的運算表達式:第二行顯示當(dāng)前輸入的作數(shù)或運算結(jié)果:第三行到篤七行為計算器按鈕·
(2)輸入擬作數(shù)·按數(shù)字0到9和小數(shù)點按鈕鍵時,可以輸入顯示操作數(shù)·
(3)操作數(shù)編輯。按“-”按鈕腱,可以清除當(dāng)前輸入作數(shù)的最后一個字符:按“±”按鈕鍵,切換當(dāng)前輸入數(shù)的正負號:按"C”按鈕腱,清除當(dāng)前輸入的操作數(shù)·
(4)輸入運算符·按運算符“/、*`、+”按鈕鍵時,顯示到目前為止的輸入的運算表達式·
(5)執(zhí)行運算·按“=”按鈕鍵,執(zhí)行運算,顯示運算結(jié)果。

程序?qū)崿F(xiàn)的基本思維和關(guān)鍵技術(shù)方法如下:

(1)創(chuàng)建一個繼承于Frame的類Calc來實現(xiàn)計算器。

(2)實現(xiàn)界面,在Calc構(gòu)造函數(shù),創(chuàng)建簡易圖形用戶界面計算器的各個組件對象·

  (2-1)在Calc構(gòu)造涵數(shù)中,創(chuàng)建兩個Label對象exprLabel(用于顯示運算表達式)和resultLabel(用于顯示當(dāng)前輸入操作數(shù)或者運算結(jié)果)·創(chuàng)建兩個StringVar實例對象expr和result,并分別綁定到對應(yīng)得Label對象。使用grid布局,在第一行和第二行顯示兩個Label對象。
(2-2)在Calc構(gòu)造函數(shù)中,使用一個二維列表存儲按鈕標(biāo)簽buttons,然后使用嵌套循環(huán)的方法創(chuàng)建和布局各個按鈕,在循環(huán)中定義事件處理函數(shù)cmd(),默認參數(shù)為按鈕標(biāo)簽buttons([r][c]),調(diào)用實例方法click(key),從而實現(xiàn)使用一個函數(shù)(使用默認參數(shù))處理所有的按鈕事件。

(3)事件處理。在事件處理函數(shù)click(self,key)中,按key的值,執(zhí)行不同的處理邏輯,在構(gòu)造函數(shù)中,創(chuàng)建一個變量startOf%NextOperand(默認為True),用于表示是否開始輸入下一個操作數(shù)·如果變量startOfNextOperand為True時,按數(shù)字鍵會設(shè)置當(dāng)前輸入為0,重新輸入新的擬作數(shù):如果變量startOfNextOperand為False時,繼續(xù)輸入當(dāng)前擬作數(shù)的下一個數(shù)字字符。

  (3-1)按數(shù)字或者小數(shù)點按鈕鍵。把輸入的字符鏈接到當(dāng)前輸入作數(shù)之后。
(3-2)按"C”按鈕鍵,清除當(dāng)前輸人操作數(shù)的最后一個字符。
(3-3)按“±”按鈕腱,切換當(dāng)前輸入數(shù)的正負號。
(3-4)按"C”按鈕鍵,清除當(dāng)前輸人的操作數(shù)。
(3-5)按運算符“/、*、、+”按鈕鍵時,顯示到目前為止的輸入的運算表達式。
(3-5)按“=”按鈕鍵,使用eval函數(shù)執(zhí)行運算,顯示運算結(jié)果。

(4)在"if__name___=='__main____'"語句中編寫測試代碼,創(chuàng)建Calc對象,并顯示運行結(jié)果。

import tkinter as tk
?
class Calculate(tk.Frame):
? ? def __init__(self, parent):
? ? ? ? """簡易計算器的構(gòu)造函數(shù)"""
? ? ? ? tk.Frame.__init__(self, parent)
? ? ? ? self.pack()
? ? ? ??
? ? ? ? self.startOfNextOperand = True ?# 開始輸入下一個操作數(shù)
?
? ? ? ? # 創(chuàng)建計算過程和結(jié)果的標(biāo)簽
? ? ? ? self.expr = tk.StringVar() ?#顯示運算表達式
? ? ? ? self.expr.set('')
? ? ? ? self.exprLabel = tk.Label(self, font = ('Helvetica', 10),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fg = '#828282', width = 32, anchor='e', textvariable = self.expr)
? ? ? ? self.exprLabel.grid(row = 0, column = 0, columnspan = 4)
? ? ? ? self.result = tk.StringVar() ? ? ?# 顯示結(jié)果
? ? ? ? self.result.set(0) ?#結(jié)果初始為0
? ? ? ? self.resultLabel = tk.Label(self, font = ('Helvetica', 20),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? width = 16, anchor='e', textvariable=self.result)
? ? ? ? self.resultLabel.grid(row = 1, column = 0, columnspan = 4)
?
? ? ? ? # 計算器按鈕的標(biāo)簽,使用2D列表表示
? ? ? ? buttons = [[ 'CE', 'C', '←', '/'],
? ? ? ? ? ? ? ? ? ?['7', '8', '9', '×'],
? ? ? ? ? ? ? ? ? ?['4', '5', '6', '-'],
? ? ? ? ? ? ? ? ? ?['1', '2', '3', '+'],
? ? ? ? ? ? ? ? ? ?['±', '0', '.', '=']]
?
? ? ? ? # 然后使用嵌套的循環(huán)的方法創(chuàng)建和布局行各個按鈕
? ? ? ? for r in range(5):
? ? ? ? ? ? for c in range(4):
? ? ? ? ? ? ? ? # 定義事件處理函數(shù)cmd(),默認參數(shù)為按鈕標(biāo)簽buttons[r][c]
? ? ? ? ? ? ? ? def cmd(key = buttons[r][c]):
? ? ? ? ? ? ? ? ? ? self.click(key)
? ? ? ? ? ? ? ? b = tk.Button(self, text = buttons[r][c], width=8,command = cmd)
? ? ? ? ? ? ? ? b.grid(row = r+2, column = c)#前兩行顯示結(jié)果 按鈕從第三行開始
? ? ? ? ? ? ? ??
? ? def click(self, key):
? ? ? ? """事件處理函數(shù)"""
? ? ? ? if key == '=': ? #按等號鍵時, 求值, 并顯示結(jié)果
? ? ? ? ? ? result = eval(self.expr.get() + self.result.get())
? ? ? ? ? ? self.result.set(result)
? ? ? ? ? ? self.expr.set('')
? ? ? ? ? ? self.startOfNextOperand = True
? ? ? ? elif key in '+-/×':
? ? ? ? ? ? if key == '×': key = '*'
? ? ? ? ? ? resultExpr = self.expr.get() + self.result.get() + key
? ? ? ? ? ? self.expr.set(resultExpr)
? ? ? ? ? ? self.result.set(0)
? ? ? ? ? ? self.startOfNextOperand = True
? ? ? ? elif key == 'C': ?# 全部清空, 回到初始狀態(tài)
? ? ? ? ? ? self.expr.set('')
? ? ? ? ? ? self.result.set(0)
? ? ? ? elif key == 'CE': ?# 清空當(dāng)前輸入
? ? ? ? ? ? self.result.set(0)
? ? ? ? elif key == '←':
? ? ? ? ? ? oldnum = self.result.get()
? ? ? ? ? ? if len(oldnum) == 1: # 只有一個字符
? ? ? ? ? ? ? ? newnum = 0
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? newnum = oldnum[:-1]
? ? ? ? ? ? self.result.set(newnum)
? ? ? ? elif key == '±': ?# 正負號,切換正負號
? ? ? ? ? ? oldnum = self.result.get() ?# 獲取原來的值
? ? ? ? ? ? if oldnum[0] == '-':
? ? ? ? ? ? ? ? newnum = oldnum[1:]
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? newnum = '-' + oldnum
? ? ? ? ? ? self.result.set(newnum)
? ? ? ? else: # 按數(shù)字或者小數(shù)點鍵
? ? ? ? ? ? if self.startOfNextOperand:
? ? ? ? ? ? ? ? self.result.set(0)
? ? ? ? ? ? ? ? self.startOfNextOperand = False
? ? ? ? ? ? oldnum = self.result.get() ?# 獲取原來的值
? ? ? ? ? ? if oldnum == '0':
? ? ? ? ? ? ? ? self.result.set(key)
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? newnum = oldnum + key
? ? ? ? ? ? ? ? self.result.set(newnum)
?
if __name__ == '__main__':
? ? root = tk.Tk()
? ? root.title('簡易計算器')
? ? calculate = Calculate(root)
? ? root.mainloop()

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

相關(guān)文章

  • python深度學(xué)習(xí)tensorflow1.0參數(shù)和特征提取

    python深度學(xué)習(xí)tensorflow1.0參數(shù)和特征提取

    這篇文章主要為大家介紹了python深度學(xué)習(xí)tensorflow1.0參數(shù)和特征提取,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Python?pygame繪制游戲圖像

    Python?pygame繪制游戲圖像

    這篇文章主要介紹了Python?pygame繪制游戲圖像,文章圍繞主題展開pygame模塊完成飛機大戰(zhàn)游戲的實戰(zhàn)開發(fā)的案例詳情,需要的朋友可以參考一下
    2022-08-08
  • PyTorch的張量tensor和自動求導(dǎo)autograd詳解

    PyTorch的張量tensor和自動求導(dǎo)autograd詳解

    這篇文章主要介紹了PyTorch的張量tensor和自動求導(dǎo)autograd,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python批量生成字幕圖片的方法詳解

    Python批量生成字幕圖片的方法詳解

    這篇文章主要為大家詳細介紹了如何利用Python語言實現(xiàn)批量生成字幕圖片用于視頻剪輯,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-05-05
  • Python進程間通信之共享內(nèi)存詳解

    Python進程間通信之共享內(nèi)存詳解

    這篇文章主要為大家詳細介紹了Python進程間通信之共享內(nèi)存的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • python使用pip安裝SciPy、SymPy、matplotlib教程

    python使用pip安裝SciPy、SymPy、matplotlib教程

    今天小編大家分享一篇python使用pip安裝SciPy、SymPy、matplotlib教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Django添加sitemap的方法示例

    Django添加sitemap的方法示例

    這篇文章主要介紹了Django添加sitemap的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Python基于csv模塊實現(xiàn)讀取與寫入csv數(shù)據(jù)的方法

    Python基于csv模塊實現(xiàn)讀取與寫入csv數(shù)據(jù)的方法

    這篇文章主要介紹了Python基于csv模塊實現(xiàn)讀取與寫入csv數(shù)據(jù)的方法,結(jié)合實例形式分析了Python使用csv模塊針對csv文件的讀取與寫入相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Python API 自動化實戰(zhàn)詳解(純代碼)

    Python API 自動化實戰(zhàn)詳解(純代碼)

    今天小編就為大家分享一篇Python API 自動化實戰(zhàn)詳解(純代碼),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 詳解python爬蟲系列之初識爬蟲

    詳解python爬蟲系列之初識爬蟲

    這篇文章主要介紹了python爬蟲系列之初識爬蟲,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論

南安市| 桑日县| 水城县| 广水市| 黑龙江省| 娱乐| 南岸区| 濮阳县| 渭南市| 集贤县| 县级市| 新乡县| 曲靖市| 井研县| 磐石市| 惠东县| 开远市| 平潭县| 汝城县| 中江县| 泽普县| 通州区| 曲阳县| 庆元县| 道孚县| 青川县| 砚山县| 咸阳市| 武安市| 永年县| 两当县| 临夏县| 铜梁县| 常德市| 浠水县| 寿光市| 洪江市| 武城县| 宁德市| 南京市| 兴隆县|