日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python的Tkinter库简单应用——开发一个简易计算器

發(fā)布時(shí)間:2023/12/20 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的Tkinter库简单应用——开发一个简易计算器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

利用python的Tkinter庫開發(fā)一個(gè)簡易計(jì)算器

文章目錄

    • 利用python的Tkinter庫開發(fā)一個(gè)簡易計(jì)算器
  • 前言
  • 一、實(shí)驗(yàn)準(zhǔn)備
  • 二、開發(fā)步驟步驟
    • 1.引入庫
    • 2.界面設(shè)計(jì)
    • 3.關(guān)鍵——實(shí)現(xiàn)Tkinter庫的調(diào)用
  • 總結(jié)


前言

任何主流語言都可以開發(fā)一個(gè)簡易的計(jì)算器,本篇我們將選用python來開發(fā)!附源代碼


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、實(shí)驗(yàn)準(zhǔn)備

1.開發(fā)軟件選用——jupyter notebook
能編寫python的軟件有很多,本次實(shí)驗(yàn)我使用,當(dāng)你要使用jupyter notebook首先要安裝anaconda,安裝的教程如下Anaconda 的安裝教程(圖文)但要注意的是Anaconda國內(nèi)安裝的清華源不可用,需要用到清華鏡像,可在百度自查,這里就不附鏈接了。

2.圖形界面的實(shí)現(xiàn)——Tkinter

當(dāng)我們用python實(shí)現(xiàn)圖形界面是,我們不得不用到的包就是Tkinter。Tkinter 是使用 python 進(jìn)行窗口視窗設(shè)計(jì)的模塊。Tkinter模塊(“Tk 接口”)是Python的標(biāo)準(zhǔn)Tk GUI工具包的接口。作為 python 特定的GUI界面,是一個(gè)圖像的窗口,tkinter是python 自帶的,可以編輯的GUI界面,我們可以用GUI 實(shí)現(xiàn)很多直觀的功能,比如想開發(fā)一個(gè)計(jì)算器,如果只是一個(gè)程序輸入,輸出窗口的話,是沒用用戶體驗(yàn)的。所有開發(fā)一個(gè)圖像化的小窗口,就是必要的。因?yàn)槠湔Z言簡單易讀,容易上手,這也是我選擇python來做一個(gè)計(jì)算器的原因。若想詳細(xì)了解Tkinter,可以看下大佬的詳解,附鏈接:Python GUI之tkinter窗口視窗教程大集合

二、開發(fā)步驟步驟

1.引入庫

這時(shí)候我們要調(diào)用python的Tkinter和math兩個(gè)包,需要注意的是在python3以后Tkinter的調(diào)用‘T’是大寫!!!不然編譯會報(bào)錯(cuò)。
代碼如下:

import math import tkinter as tk

2.界面設(shè)計(jì)

程序設(shè)計(jì)主要分兩大部分,一部分是界面設(shè)計(jì),另一部分則是實(shí)現(xiàn)計(jì)算。首先我們來看下界面設(shè)計(jì)。首先我們先搭建一個(gè)框架,可以利用循環(huán)來補(bǔ)入按鍵,在這之前我們要注意給計(jì)算器初始化
代碼如下(示例):

class Calc(tk.Tk):"""計(jì)算器窗體類"""def __init__(self):"""初始化實(shí)例"""tk.Tk.__init__(self)self.title("我的計(jì)算器")self.memory = 0 # 暫存數(shù)值self.Demo()def Demo(self):"""創(chuàng)建界面"""btn_list = ["C", "(", ")", "/","7", "8", "9", "*","4", "5", "6", "-","1", "2", "3", "+","+/-", "0", ".", "="]r = 1c = 0for b in btn_list:self.button = tk.Button(self, text=b, width=5,command=(lambda x=b: self.operate(x)))self.button.grid(row=r, column=c, padx=3, pady=6)c += 1if c > 3:c = 0r += 1self.entry = tk.Entry(self, width=24, borderwidth=2,bg="black", font=("黑體", 11))self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6)

接下來就是實(shí)現(xiàn)算法部分了,在以往c++中為了實(shí)現(xiàn)一個(gè)多項(xiàng)式如:2-(3-2),當(dāng)一下子多項(xiàng)式輸入在計(jì)算器中,這一類關(guān)于括號優(yōu)先級問題就得被考慮,還需要將數(shù)字和符號分別壓入堆棧,判斷優(yōu)先級,當(dāng)我們使用python時(shí),則可以通過Tkinter文本框(entry)來實(shí)現(xiàn)entry的用法有很多,可看Python XML解析來了解更多,這里就不一一贅述了
代碼如下:

def operate(self, key):"""press the button"""if key == "=": # 輸出結(jié)果result = eval(self.entry.get())#獲取文本框輸入的值(值為=)self.entry.insert(tk.END, " = " + str(result))#在’=‘后輸出計(jì)算結(jié)果elif key == "C": # 清空輸入框self.entry.delete(0, tk.END)#將結(jié)果清零elif key == "+/-": # 取相反數(shù)if "=" in self.entry.get():self.entry.delete(0, tk.END)elif self.entry.get()[0] == "-":self.entry.delete(0)else:self.entry.insert(0, "-")else: # 其他鍵if "=" in self.entry.get():self.entry.delete(0, tk.END)self.entry.insert(tk.END, key) if __name__ == "__main__":Calculator().mainloop()

3.關(guān)鍵——實(shí)現(xiàn)Tkinter庫的調(diào)用

python提供了多個(gè)圖形開發(fā)界面的庫,常用的庫就用Tkinter,使用Tkinter可以大大減少代碼的行數(shù),思路也較為清晰簡單,簡單易讀,但在編寫過程中,主要通過運(yùn)用Tkinter的函數(shù),這也使得程序的算法沒有那么的突出。


總結(jié)

本文僅僅簡單介紹了Tkinter的使用,來開發(fā)一個(gè)簡易的計(jì)算器。大家可以根據(jù)可以通過下面的源代碼,運(yùn)行下來試一下,另附演示動圖。另外對于本文中提到的Tkinter庫有感興趣的可以看下上面的鏈接,很詳細(xì)

源代碼

import tkinter as tk class Calculator(tk.Tk):"""計(jì)算器窗體類"""def __init__(self):"""初始化實(shí)例"""tk.Tk.__init__(self)self.title("我的計(jì)算器")self.memory = 0 # 暫存數(shù)值self.Demo()def Demo(self):"""Create the Demo"""btn_list = ["C", "(", ")", "/","7", "8", "9", "*","4", "5", "6", "-","1", "2", "3", "+","+/-", "0", ".", "="]r = 1c = 0for b in btn_list:self.button = tk.Button(self, text=b, width=5,command=(lambda x=b: self.operate(x)))self.button.grid(row=r, column=c, padx=3, pady=6)c += 1if c > 3:c = 0r += 1self.entry = tk.Entry(self, width=21, borderwidth=3,bg="light blue", font=("黑體", 11))self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6)def operate(self, key):"""press the button"""if key == "=": # 輸出結(jié)果result = eval(self.entry.get())#獲取文本框輸入的值(值為=)self.entry.insert(tk.END, " = " + str(result))#在’=‘后輸出計(jì)算結(jié)果elif key == "C": # 清空輸入框self.entry.delete(0, tk.END)#將結(jié)果清零elif key == "+/-": # 取相反數(shù)if "=" in self.entry.get():self.entry.delete(0, tk.END)elif self.entry.get()[0] == "-":self.entry.delete(0)else:self.entry.insert(0, "-")else: # 其他鍵if "=" in self.entry.get():self.entry.delete(0, tk.END)self.entry.insert(tk.END, key)if __name__ == "__main__":Calculator().mainloop()

總結(jié)

以上是生活随笔為你收集整理的python的Tkinter库简单应用——开发一个简易计算器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。