用Python制作一個簡單的計算器(加減乘除)

簡易計算器

寫在前面

小編用python實現了一個簡單的計算器,一起來看看吧~

需要環境:

  • pycharm

  • python

一、需求分析

1.1 功能分析

使用Python的Tkinter界面設計實現一個簡單的計算器,主要功能按鈕包括數字鍵、四則運算符、等于號和清除鍵,實現了簡單的加減乘除運算。

1.2 性能分析

① 系統具有易操作性

在日常使用中,這個計算器應該可以滿足大多數用戶的需求,即使在舊計算機上也能夠流暢運行。

② 系統具有高效性

這個計算器應用程序非常簡單,沒有太多的計算和數據處理。因此,它的性能應該是相對較好的,無論是在較老的電腦還是在較新的電腦上都能夠快速響應和運行。

二、技術原理

這個計算器應用程序是基于Tkinter GUI工具集編寫的一個Python應用程序,它使用不同類型的控件和布局管理器來創建圖形用戶界面并實現計算器的各種功能,通過用方法來處理用戶在應用程序上的操作并顯示相應的結果。

三、詳細設計

3.1 導入tkinter庫

① 程序設計

import tkinter as tk

② 程序分析

在程序開頭,通過"import tkinter as tk"導入tkinter庫,以便使用tkinter庫中的控件和方法。

3.2 定義全局變量

① 程序設計

t = ""``color1 = "skyblue"``color2 = "yellow"``color3 = "pink"``color4 = "red"``result = tk.StringVar()

② 程序分析

全局變量t用于表示計算器輸入框中的內容。全局變量result是一個StringVar對象,用于實時更新輸入框中的內容,全局變量color1-4分別代表不同的顏色。

3.3 定義添加函數

① 程序設計

def Add(num):`    `global t`    `t = t + str(num)`    `result.set(t)

② 程序分析

Add函數用于將數字和運算符添加到輸入框中。它獲取單擊的按鈕上的值,將其轉換為字符串并附加到全局變量t中,最后更新輸入框中的內容result。

3.4 定義結果函數

① 程序設計

def Result():`    `try:`        `global t`        `total = str(eval(t))`        `result.set(total)`        `t = ""`    `except:`        `result.set(" error ")`        `t = ""

② 程序分析

Result函數用于計算表達式并將結果更新到輸入框中。它首先嘗試使用Python的內置eval函數計算從輸入框中獲取的表達式。如果計算成功,則將結果轉換為字符串并設置為result,最后清空全局變量t。如果出現任何錯誤,設置result為" error "字符串并清空全局變量t。

3.5 定義清空函數

① 程序設計

def Clear():`    `global t`    `t = ""`    `result.set("")

② 程序分析

Clear函數用于清空輸入框。

3.6 創建主窗口并指定其大小和位置

① 程序設計

root = tk.Tk()``root.configure(background="black")``root.title("簡易計算器")``sh = root.winfo_screenheight()``sw = root.winfo_screenwidth()``h = 150``w = 295``x = (sw - w) // 2``y = (sh - h) // 2``root.geometry('%dx%d+%d+%d' % (w, h, x, y))

② 程序分析

通過調用tkinter庫中的Tk()函數創建主窗口對象,并設置它的標題和背景顏色和大小。然后通過獲取屏幕高度和寬度來自適應地計算窗口的大小和位置。最后使用geometry()方法將窗口定位和顯示在屏幕上。

3.7 創建輸入框

① 程序設計

entrys = tk.Entry(root, textvariable=result, width=22)``entrys.grid(columnspan=4, ipadx=70)

② 程序分析

創建一個tkinter.Entry對象來顯示計算器的輸入框。并使用grid()方法來將其添加到主窗口上,并設置它的位置和大小。

3.8 創建數字和運算符按鈕

① 程序設計

button1 = tk.Button(root, text=' 1 ', bg=color1, command=lambda: Add(1), height=1, width=7)``button1.grid(row=2, column=0)``button2 = tk.Button(root, text=' 2 ', bg=color1, command=lambda: Add(2), height=1, width=7)``button2.grid(row=2, column=1)``button3 = tk.Button(root, text=' 3 ', bg=color1, command=lambda: Add(3), height=1, width=7)``button3.grid(row=2, column=2)``button4 = tk.Button(root, text=' 4 ', bg=color1, command=lambda: Add(4), height=1, width=7)``button4.grid(row=3, column=0)``button5 = tk.Button(root, text=' 5 ', bg=color1, command=lambda: Add(5), height=1, width=7)``button5.grid(row=3, column=1)``button6 = tk.Button(root, text=' 6 ', bg=color1, command=lambda: Add(6), height=1, width=7)``button6.grid(row=3, column=2)``button7 = tk.Button(root, text=' 7 ', bg=color1, command=lambda: Add(7), height=1, width=7)``button7.grid(row=4, column=0)``button8 = tk.Button(root, text=' 8 ', bg=color1, command=lambda: Add(8), height=1, width=7)``button8.grid(row=4, column=1)``button9 = tk.Button(root, text=' 9 ', bg=color1, command=lambda: Add(9), height=1, width=7)``button9.grid(row=4, column=2)``button0 = tk.Button(root, text=' 0 ', bg=color1, command=lambda: Add(0), height=1, width=7)``button0.grid(row=5, column=0)``   ``add = tk.Button(root, text=' + ', bg=color2, command=lambda: Add("+"), height=1, width=7)``add.grid(row=2, column=3)``subtract = tk.Button(root, text=' - ', bg=color2, command=lambda: Add("-"), height=1, width=7)``subtract.grid(row=3, column=3)``multiply = tk.Button(root, text=' * ', bg=color2, command=lambda: Add("*"), height=1, width=7)``multiply.grid(row=4, column=3)``divide = tk.Button(root, text=' / ', bg=color2, command=lambda: Add("/"), height=1, width=7)``divide.grid(row=5, column=3)

② 程序分析

創建10個數字按鈕和4個運算符按鈕,并用grid()方法將它們添加到主窗口上。每個按鈕都分配了相應的數字或符號,并與Add函數相關聯以便將它們添加到輸入框中。

3.9 創建等于號和清除按鈕

① 程序設計

equal = tk.Button(root, text=' = ', bg=color3, command=Result, height=1, width=7)``equal.grid(row=5, column=2)``clear = tk.Button(root, text='Clear', bg=color4, command=Clear, height=1, width=7)``clear.grid(row=5, column=1)

② 程序分析

為等于號和清除按鈕創建兩個單獨的按鈕,并將它們添加到主窗口上。為等于號按鈕分配Result函數并為清除按鈕分配Clear函數。

四、功能實現

😝除了上面分享,我也給大家整理了Python學習籽料。Python+pycharm安裝包,如果有需要的話,可以V掃描下方二維碼聯系領取哦~

學好 Python 不論是就業還是做副業賺錢都不錯,但要學會 Python 還是要有一個學習規劃。最后大家分享一份全套的 Python 學習資料,給那些想學習 Python 的小伙伴們一點幫助!
在這里插入圖片描述
因篇幅有限,僅展示部分資料,添加上方即可獲取👆

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/diannao/36455.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36455.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36455.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript算法之龜兔賽跑

簡介:龜兔賽跑算法,又稱弗洛伊德循環檢測算法,是一種在鏈表中非常常用的算法。它基于運動學和直覺的基本定律。本文旨在向您簡要介紹該算法,并幫助您了解這個看似神奇的算法。 假設高速公路上有兩輛車。其中一輛的速度為 x,另一輛的速度為 2x。它們唯一能相遇的條件是它們…

[MYSQL] MYSQL表的操作

前言 由圖可以看出,表是庫的一部分,所以有庫才能使用表 show databases; 查看已有的庫 create database db_name ; 創建庫 使用 use bd_name 使用庫,之后對標進行增刪查改就只會操作這個庫里的而不影響其他庫 創建表 create table [if not exists] table_name( d…

MySQL周內訓參照3、簡單查詢與多表聯合復雜查詢

基礎查詢 1、查詢用戶信息,僅顯示用戶的姓名與手機號,用中文顯示列名。中文顯示姓名列與手機號列 SELECT user_id AS 編號, phone AS 電話 FROM user; 2. 根據訂購表進行模糊查詢,模糊查詢需要可以走索引,需要給出explain語句。…

位運算(、|、^、~、>>、<<)

一、概念 在C#中,位運算是對整數的二進制表示進行操作的運算。這些運算包括按位與(AND)、按位或(OR)、按位異或(XOR)、按位取反(NOT)、左移(Left Shift&…

【區間動態規劃】1771. 由子序列構造的最長回文串的長度

本文涉及知識點 動態規劃匯總 LeetCode1771. 由子序列構造的最長回文串的長度 給你兩個字符串 word1 和 word2 ,請你按下述方法構造一個字符串: 從 word1 中選出某個 非空 子序列 subsequence1 。 從 word2 中選出某個 非空 子序列 subsequence2 。 連…

企業AI落地的大法器-用數據清洗手段提升數據質量,找回遺珠之光

開篇 書接上文,在上文《談LORA微調與數據質量處理之爭》中我們詳細敘述了:LORA微調手段和數據清洗之分,以及如何平衡和組合使用LORA微調與數據清洗的手法。 文末我們提到了“下一篇我們講著重講述:在打造企業數據清洗工具、平臺…

003 SpringBoot操作ElasticSearch7.x

文章目錄 5.SpringBoot集成ElasticSearch7.x1.添加依賴2.yml配置3.創建文檔對象4.繼承ElasticsearchRepository5.注入ElasticsearchRestTemplate 6.SpringBoot操作ElasticSearch1.ElasticsearchRestTemplate索引操作2.ElasticsearchRepository文檔操作3.ElasticsearchRestTempl…

git tag 打標簽指南

參考 Pro Git 打標簽 查看標簽 git tag git tag -l 創建標簽 git tag tag002 創建了名稱是 tag002 的標簽,打在最新提交的 commit 上。只是打在本地,沒有推送到遠程。 如果要給以前的 commitId 打標簽,就用 git tag tag001 159e40 給 159e4…

java基于ssm+jsp 彈幕視頻網站

1前臺首頁功能模塊 彈幕視頻網站,在彈幕視頻網站可以查看首頁、視頻信息、商品信息、論壇信息、我的、跳轉到后臺、購物車、客服等內容,如圖1所示。 圖1前臺首頁界面圖 登錄,通過登錄填寫賬號、密碼等信息進行登錄操作,如圖2所示…

GPT-5即將登場:期待AI新時代的技術突破與人機高效協作

隨著科技的飛速發展,我們即將迎來一個人工智能領域的重要里程碑——GPT-5的發布。這一技術革新無疑是一個激動人心的時刻,它預示著AI技術將邁向一個全新的高度。GPT-5作為人工智能領域的一大突破,有望為我們帶來前所未有的應用場景與深遠影響…

顯卡GTX與RTX有什么區別?哪一個更適合玩游戲?

游戲發燒友們可能對游戲顯卡并不陌生,它直接關系到游戲畫面的流暢度、細膩程度和真實感。在眾多顯卡品牌中,英偉達的GTX和RTX系列顯卡因其出色的性能而備受關注。 一、GTX與RTX的區別 架構差異 GTX系列顯卡采用的是Pascal架構,這是英偉達在…

探索MySQL核心技術:理解索引和主鍵的關系

在數據密集型應用中,數據庫的性能往往是決定一個應用成敗的重要因素之一。其中,MySQL作為一種開源關系型數據庫管理系統,以其卓越的性能和豐富的功能被廣泛應用。而在MySQL數據庫優化的眾多技巧中,索引和主鍵扮演著極其重要的角色…

安霸CVFlow推理開發筆記

一、安霸環境搭建: 1.遠程172.20.62.13 2. 打開Virtualbox,所在目錄:E:\Program Files\Oracle\VirtualBox 3. 配置好ubuntu18.04環境,Ubuntu密碼:amba 4. 安裝toolchain,解壓Ambarella_Toolchain_CNNGe…

鴻蒙開發HarmonyOS NEXT (二) 熟悉ArkUI

一、構造函數 構造一個商品類Item,然后利用foreach函數循環渲染 class Item {name: stringimage: ResourceStrprice: numberdiscount: numberconstructor(name: string, image: ResourceStr, price: number, discount: number 0) {this.name name;this.image ima…

JAVA進階學習09

文章目錄 一、雙列集合Map1.1 雙列集合介紹1.2 雙列集合Map常見API1.3 Map集合遍歷方式1.3.1 通過集合的全部鍵來遍歷集合1.3.2 Map集合遍歷方式21.3.3 Map集合遍歷方式3 二、Map集合的實現類2.1 HashMap類2.2 LinkedHashMap2.3 TreeMap 三、可變參數四、Collections類五、集合…

Vue 2.0 與 3.0區別

Vue.js是一種流行的前端JavaScript框架,用于構建用戶界面和單頁面應用程序。隨著時間的推移,Vue.js已經從Vue2發展到了Vue3,這兩個版本在**生命周期、模板組件以及性能**等方面有顯著差異。具體分析如下: 1. **生命周期** - **Vue…

恭喜朱雀橋的越南薇妮她牌NFC山竹汁飲料,成為霸王茶姬奶茶主材

朱雀橋NFC山竹汁飲料:榮登霸王茶姬奶茶主材,非遺傳承的天然之選 近日,據小編了解到:霸王茶姬欣喜地宣布,成功與朱雀橋達成合作越南薇妮她VINUT牌NFC山竹汁飲料。這款商超產品憑借其卓越的品質與獨特的口感&#xff0c…

PostgreSQL安裝教程及文件介紹

Ubuntu 安裝和配置 PostgreSQL 以 Ubuntu Server 20.04,PostgreSQL 12 版本為例。 1. 安裝 使用如下命令,安裝指定版本的 PostgreSQL sudo apt install postgresql-12在 Ubuntu 20.04 中安裝 PostgreSQL 登錄您的 Ubuntu 系統并使用以下 apt 命令更新…

Java web應用性能分析之【prometheus監控指標體系】

Java web應用性能分析之【系統監控工具prometheus】_javaweb服務器性能監控工具-CSDN博客 Java web應用性能分析之【prometheusGrafana監控springboot服務和服務器監控】_grafana 導入 prometheus-CSDN博客 因為篇幅原因,前面沒有詳細說明Prometheus的監控指標&…

將手機上的已安裝應用拷貝出到電腦中

方法一:通過應用管理器 下載并安裝應用管理器:可以使用應用管理器如“ES文件瀏覽器”或“APK Extractor”。 提取APK文件: 打開應用管理器。 找到已安裝的應用程序列表。 選擇你想要提取的應用程序,然后選擇“提取”或“備份”選…