国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

快速上手,五分鐘內完成個性化Python GUI計算器搭建

網絡 路由交換
在短短的五分鐘內,我們成功地使用Tkinter庫搭建了一個Python GUI計算器。這個計算器可以進行基本的數學運算,并為用戶提供了友好的交互體驗。

一、前言

在本教程中,你將學習如何在Python中使用Tkinter在短短幾分鐘內制作自己的全功能GUI計算器。

在完成本教程時,除了通常隨Python標準庫一起安裝的Tkinter之外,不需要任何額外的庫。

如果使用的是Linux系統,可能需要安裝它:

$ pip install python-tk

一切安裝完畢后,開始編寫我們的計算器代碼,在教程結束時,將搭建出類似下面的東西:

圖片圖片

二、使用eval()解決數學問題

eval()是Python中的一個內置函數,它會解析表達式參數并將其作為Python表達式進行求值。

我們將使用eval()的概念來解決數學表達式。

用法示例:

>>> while True:
...     expression = input('Enter equation: ')
...     result = eval(expression)
...     print(result)
... 
Enter equation: 2 + (9/9) *3
5.0
Enter equation: 12 /9 + (18 -2) % 5
2.333333333333333

使用這4行代碼,已經在Python中制作了一個命令行計算器,現在讓我們使用相同的概念來制作一個帶有圖形界面的計算器。

這個GUI計算器有三個主要部分:

  • 用于顯示表達式的屏幕(框架)
  • 保存表達式值的按鈕
  • 搭建計算器邏輯

三、為計算器制作一個框架

from tkinter import Tk, Entry, Button, StringVar
class Calculator:
    def __init__(self, master):
        master.title('Simple Calculator')
        master.geometry('360x260+0+0')
        master.config(bg='#438')
        master.resizable(False, False)
root = Tk()
calculator = Calculator(root)
root.mainloop()

輸出:

圖片圖片

四、添加一個屏幕來顯示表達式

from tkinter import Tk, Entry, Button, StringVar
class Calculator:
    def __init__(self, master):
        master.title('Simple Calculator')
        master.geometry('360x260+0+0')
        master.config(bg='#438')
        master.resizable(False, False)
               
        self.equation = StringVar()
        self.entry_value = ''
        Entry(width = 28,bg='lightblue', font = ('Times', 16), textvariable = self.equation).place(x=0,y=0)
root = Tk()
calculator = Calculator(root)
root.mainloop()

輸出:

圖片圖片

如上所示,我們已經完成了顯示屏幕的構建,現在需要添加一個按鈕用于形成數學表達式。

五、添加用于形成數學表達式的按鈕

這些按鈕的創建方式相同,只是它們所存儲的值和它們的位置不同。用于形成數學表達式的按鈕包括:

  • 0到9的數字
  • 數學運算符+、-、/、%
  • 小數點
  • 括號()

我們需要為每個按鈕附加一個命令,以便當我們點擊它時,它就會顯示在顯示屏上。為此,編寫一個簡單的show()函數來實現這個功能。

from tkinter import Tk, Entry, Button, StringVar
class Calculator:
    def __init__(self, master):
        master.title('Simple Calculator')
        master.geometry('360x260+0+0')
        master.config(bg='#438')
        master.resizable(False, False)
               
        self.equation = StringVar()
        self.entry_value = ''
        Entry(width = 28,bg='lightblue', font = ('Times', 16), textvariable = self.equation).place(x=0,y=0)
        
        Button(width=8, text = '(', relief ='flat', command=lambda:self.show('(')).place(x=0,y=50)
        Button(width=8, text = ')', relief ='flat', command=lambda:self.show(')')).place(x=90, y=50)
        Button(width=8, text = '%', relief ='flat', command=lambda:self.show('%')).place(x=180, y=50)
        Button(width=8, text = '1', relief ='flat', command=lambda:self.show(1)).place(x=0,y=90)
        Button(width=8, text = '2', relief ='flat', command=lambda:self.show(2)).place(x=90,y=90)
        Button(width=8, text = '3', relief ='flat', command=lambda:self.show(3)).place(x=180,y=90)
        Button(width=8, text = '4', relief ='flat', command=lambda:self.show(4)).place(x=0,y=130)
        Button(width=8, text = '5', relief ='flat', command=lambda:self.show(5)).place(x=90,y=130)
        Button(width=8, text = '6', relief ='flat', command=lambda:self.show(6)).place(x=180,y=130)
        Button(width=8, text = '7', relief ='flat', command=lambda:self.show(7)).place(x=0,y=170)
        Button(width=8, text = '8', relief ='flat', command=lambda:self.show(8)).place(x=180,y=170)
        Button(width=8, text = '9', relief ='flat', command=lambda:self.show(9)).place(x=90,y=170)
        Button(width=8, text = '0', relief ='flat', command=lambda:self.show(0)).place(x=0,y=210)
        Button(width=8, text = '.', relief ='flat', command=lambda:self.show('.')).place(x=90,y=210)
        Button(width=8, text = '+', relief ='flat', command=lambda:self.show('+')).place(x=270,y=90)
        Button(width=8, text = '-', relief ='flat', command=lambda:self.show('-')).place(x=270,y=130)
        Button(width=8, text = '/', relief ='flat', command=lambda:self.show('/')).place(x=270,y=170)
        Button(width=8, text = 'x', relief ='flat', command=lambda:self.show('*')).place(x=270,y=210)
def show(self, value):
        self.entry_value +=str(value)
        self.equation.set(self.entry_value)
    
root = Tk()
calculator = Calculator(root)
root.mainloop()

輸出:

輸出是一個帶有按鈕的計算器,當你點擊其中任意一個按鈕時,它的值就會顯示在顯示屏上。

現在我們的計算器只剩下兩個按鈕就能完整,一個是重置按鈕用于清除屏幕,另一個是等號(=)按鈕,用于計算表達式并將結果顯示在屏幕上。

六、為計算器添加重置和等號按鈕

from tkinter import Tk, Entry, Button, StringVar
class Calculator:
    def __init__(self, master):
        master.title('Simple Calculator')
        master.geometry('360x260+0+0')
        master.config(bg='#438')
        master.resizable(False, False)
               
        self.equation = StringVar()
        self.entry_value = ''
        Entry(width = 28,bg='lightblue', font = ('Times', 16), textvariable = self.equation).place(x=0,y=0)
Button(width=8, text = '(', relief ='flat', command=lambda:self.show('(')).place(x=0,y=50)
        Button(width=8, text = ')', relief ='flat', command=lambda:self.show(')')).place(x=90, y=50)
        Button(width=8, text = '%', relief ='flat', command=lambda:self.show('%')).place(x=180, y=50)
        Button(width=8, text = '1', relief ='flat', command=lambda:self.show(1)).place(x=0,y=90)
        Button(width=8, text = '2', relief ='flat', command=lambda:self.show(2)).place(x=90,y=90)
        Button(width=8, text = '3', relief ='flat', command=lambda:self.show(3)).place(x=180,y=90)
        Button(width=8, text = '4', relief ='flat', command=lambda:self.show(4)).place(x=0,y=130)
        Button(width=8, text = '5', relief ='flat', command=lambda:self.show(5)).place(x=90,y=130)
        Button(width=8, text = '6', relief ='flat', command=lambda:self.show(6)).place(x=180,y=130)
        Button(width=8, text = '7', relief ='flat', command=lambda:self.show(7)).place(x=0,y=170)
        Button(width=8, text = '8', relief ='flat', command=lambda:self.show(8)).place(x=180,y=170)
        Button(width=8, text = '9', relief ='flat', command=lambda:self.show(9)).place(x=90,y=170)
        Button(width=8, text = '0', relief ='flat', command=lambda:self.show(0)).place(x=0,y=210)
        Button(width=8, text = '.', relief ='flat', command=lambda:self.show('.')).place(x=90,y=210)
        Button(width=8, text = '+', relief ='flat', command=lambda:self.show('+')).place(x=270,y=90)
        Button(width=8, text = '-', relief ='flat', command=lambda:self.show('-')).place(x=270,y=130)
        Button(width=8, text = '/', relief ='flat', command=lambda:self.show('/')).place(x=270,y=170)
        Button(width=8, text = 'x', relief ='flat', command=lambda:self.show('*')).place(x=270,y=210)
        Button(width=8, text = '=', bg='green', relief ='flat', command=self.solve).place(x=180, y=210)
        Button(width=8, text = 'AC', relief ='flat', command=self.clear).place(x=270,y=50)
def show(self, value):
        self.entry_value +=str(value)
        self.equation.set(self.entry_value)
      
    def clear(self):
        self.entry_value = ''
        self.equation.set(self.entry_value)
    
    def solve(self):
        result = eval(self.entry_value)
        self.equation.set(result)
    
root = Tk()
calculator = Calculator(root)
root.mainloop()

輸出:

七、結語

在短短的五分鐘內,我們成功地使用Tkinter庫搭建了一個Python GUI計算器。這個計算器可以進行基本的數學運算,并為用戶提供了友好的交互體驗。

搭建一個GUI計算器不僅僅是一個有趣的項目,它還展示了Python的強大和靈活性。希望對你有所幫助,并激勵你進一步探索和開發更多有趣的GUI應用程序!

責任編輯:武曉燕 來源: Python學研大本營
相關推薦

2025-05-22 10:00:00

DockerRedis容器

2022-02-23 20:38:32

云原生集群Postgres

2024-09-18 08:21:24

JavaScriptTypeScriptprototype

2022-12-16 09:55:50

網絡架構OSI

2020-11-06 08:54:43

Vue 3.0函數代碼

2009-11-17 12:47:05

PHP配置

2022-11-03 16:41:08

2023-02-16 08:26:41

2024-03-21 09:51:22

Python爬蟲瀏覽網站

2021-01-11 09:33:37

Maven數目項目

2025-04-07 05:00:00

2022-07-27 15:50:55

漏洞網絡攻擊

2023-07-31 11:37:05

經營分析模型

2014-08-11 17:30:52

BlackphoneRootDef Con

2024-07-10 18:55:09

Python定時

2022-03-04 16:06:33

數據庫HarmonyOS鴻蒙

2020-07-17 07:44:25

云計算邊緣計算IT

2025-03-12 10:05:01

運維Vim編輯

2018-11-23 11:44:21

華為云

2018-11-14 12:45:12

華為
點贊
收藏

51CTO技術棧公眾號

国产精品成人一区二区网站软件| 国产精品mv在线观看| 午夜成人免费视频| 男人添女人下面高潮视频| 成人毛片免费看| 精品国产一区二区在线| hd国产人妖ts另类视频| 福利视频第一区| 亚洲色图狂野欧美| 在线观看午夜看亚太视频| 久久久久久99精品| 亚洲精品一区二| 国产精品色网| 国产精品毛片一区视频| 中文字幕免费一区二区| 国产成人91久久精品| 四虎884aa成人精品最新| 欧美激情精品久久久久久变态| 色综合天天色| 久久视频在线视频| 国产精品美女久久久久| 欧美裸身视频免费观看| 中文字幕日韩在线| 欧美一区二区三区图| 九色精品91| 国产欧美一区二区三区视频| 欧美成人首页| 国产日韩欧美一区二区三区四区| 欧美精品成人| 国产精品毛片一区视频| 亚洲天堂成人| 欧美日韩综合久久| 日韩av中文字幕一区二区| 亚洲一卡二卡三卡| 成人午夜大片免费观看| a在线视频观看| 中文字幕在线播放不卡一区| 奇米777影视成人四色| 亚洲蜜桃精久久久久久久| 黄页在线免费看| 一区二区三区在线播放| 污网站在线看| 欧美日韩午夜在线视频| 久久不射影院| 久久精品最新地址| 精品久久不卡| 久久精品国产第一区二区三区最新章节 | 国产精品一香蕉国产线看观看| 999久久久免费精品国产| 99超碰麻豆| 精品一区二区免费看| 日本中文字幕亚洲| 亚洲综合色成人| av二区在线| 亚洲黄色在线观看| 麻豆视频久久| 亚洲aⅴ男人的天堂在线观看| 99精品久久久| 亚洲国产成人精品无码区99| 国产精品欧美久久久久无广告| 在线视频色在线| 日韩午夜av一区| 久久伊人国产| 国产精品久久久久久久久久久久| 中文字幕免费一区二区三区| 9l视频自拍9l视频自拍| 亚洲六月丁香色婷婷综合久久| 成人影欧美片| 久久人人爽人人| 国产精品videosex极品| 日本福利视频在线观看| 亚洲制服丝袜av| h片在线观看视频免费| 97国产真实伦对白精彩视频8| 亚洲精品影视| 好男人www社区| 91精品欧美一区二区三区综合在 | 一区二区三区不卡在线观看| 丝袜综合欧美| 91精品国产91久久久久久吃药 | 欧美片一区二区三区| 欧美精品三级| av动漫在线看| 欧美性大战久久久久久久蜜臀| 99欧美精品| 超碰97在线播放| 久久久久高清精品| 日本视频在线观看| 91po在线观看91精品国产性色| 国产精品美女久久久| 成人黄18免费网站| 亚洲精品永久免费| 亚洲综合五月| 亚洲一区二区三区四区五区xx| 欧美福利电影网| 亚洲aa在线| www插插插无码视频网站| 欧美亚一区二区| 久久久伦理片| 永久免费精品视频网站| 亚洲欧美日韩一区二区| 亚洲四虎影院| 日本成人三级| 日韩欧美在线看| 欧美一级片网址| 国产在线观看欧美| 日韩一区二区三区在线视频| 不卡av一区二区| 国产精品亚洲二区在线观看 | 日韩视频一区在线| 久久精品日韩欧美| 在线观看国产v片| 欧美www在线| 国产精品自在在线| 国产视频在线播放| 99精品在线直播| 亚洲自拍偷拍图区| 欧美区一区二区| 热久久最新地址| 亚洲精品720p| 国产亚洲毛片| 日韩精品系列| 国产精品吴梦梦| 亚洲一区二区高清| 秋霞影视一区二区三区| 妺妺窝人体色www在线观看| 曰本色欧美视频在线| 精品制服美女丁香| 91桃色在线| 伊人久久大香线蕉午夜av| 欧美一级淫片007| 亚洲视频狠狠| www.中文字幕久久久| 99久久久精品免费观看国产| 福利视频一区二区| 这里只有精品在线| 国产精品视频二区三区| 91麻豆精品秘密入口| 91成人网在线| 欧美网站在线| aaa在线观看| 蜜桃麻豆91| 日韩欧美精品在线视频| 久久av最新网址| 欧美精品videossex少妇| 日韩中文字幕一区二区| 亚洲激情视频网站| 成人丝袜18视频在线观看| а天堂中文最新一区二区三区| 久草在在线视频| 国产成人精品优优av| 精品国产1区2区| 国产视频亚洲| 周于希免费高清在线观看 | 亚洲精品成a人在线观看| 国产一区二区成人久久免费影院| av老司机在线观看| 欧美日韩dvd| 久久久成人精品视频| 国产精品久久久久四虎| 亚洲都市激情| 成人在线免费看| 日韩av电影在线观看| 亚洲人成网站免费播放| 国产夜色精品一区二区av| 国产91精品对白在线播放| 午夜成在线www| 欧美精品一区二区三区久久| 亚洲欧美激情精品一区二区| 久久嫩草精品久久久久| 九九热精品视频在线观看| 国产精品ⅴa有声小说| 国产经典久久久| 国语自产在线不卡| 色综合天天综合网天天狠天天| 青椒成人免费视频| 美女久久精品| 天堂v视频永久在线播放| 伊人婷婷久久| 欧美在线视频一区| 欧美一区二区三区在线电影| 99国产欧美久久久精品| 精品国产精品| 一二三四区在线观看| 免费超爽大片黄| 国产日韩欧美综合| 亚洲аv电影天堂网| 国产精品每日更新| 亚洲在线日韩| 精品久久97| 欧美xxxx少妇| 国产a国产a国产a| 亚洲视频在线二区| 国产精品一区二区三区免费视频| 亚洲成人在线网| 伊人色综合久久天天| 国产精品一区二区在线播放| 久久久久av| 亚洲最大的免费视频网站| 91精品国产91久久久久游泳池 |