python制作计算机程序_用 Python 开发实用程序 – 计算器
一段時間前,自己制作了一個庫 “sui-math”。這其實是 math 的翻版。做完后,我又想到,python 既然可以輕易的完成任何的數(shù)學(xué)計算,何不用 python 開發(fā)一個小程序?qū)iT用以計算呢?
今天就讓我們走進計算器的世界,用 python 來編寫一個可以用的計算器。
編寫思路
用戶可以通過鼠標(biāo)或鍵盤來輸入或刪除數(shù)字或符號,按下等號便可計算。
本教程借助 python 的 pygame 庫來實現(xiàn)程序。當(dāng)然,看完本教程后,你還可以通過利用,pygame 來這制作小游戲。所以下面稍稍介紹一下 pygame 及其安裝。
當(dāng)然,首先是需要安裝 pygamepip install -U pygame
計算器關(guān)鍵邏輯
其實邏輯就是不斷地獲取用戶的操作,直到用戶按下 quit 鍵(關(guān)閉)。我們可以把這個不斷獲取操作,并不斷的操作做出反應(yīng)過程叫做:事件處理器。
那怎么做出一個“事件處理器”呢?其實,就是一個大大的 “while True:” 把從啟動到結(jié)束,對用戶所有的操作做出的反應(yīng)給包起來。這讀起來有點繞口,等會會有詳細的代碼。
如何計算
對于其他的語言來說,計算是個大大的問題。但 python 不同,它有個特殊的內(nèi)置函數(shù),叫做eval。這個只有四個字母的函數(shù),解決了計算器的運算。
打個比方:現(xiàn)在已經(jīng)可以獲取用戶所作出的操作,比如說按下符號,或者是數(shù)字。但是,怎么知道用戶會在按下等號前,按下多少個符號和數(shù)字呢?用戶有可能按1個數(shù)字,也有可能按一百個數(shù)字,可能是一個符號,可能是好幾個符號。
因此,不妨設(shè)定一個變量,一個空的字串符。num = ""
每當(dāng)用戶按下一個數(shù)字或者一個符號,就在這個字串符里增加這個數(shù)字和符號。每次按下這個字串符后,就在屏幕里顯示這個字串符。舉個最簡單的例子:num += str(1)
word = t.render(num,True,(0,0,0),(225,225,225))
screen.blit(word, (XXX,XXX)) #XXX代表位置
pygame.display.update() #更新屏幕
當(dāng)用戶按下 ”1” 的時候,num 就會增加字串符1。第2,3行實現(xiàn)了在屏幕上顯示這個字串符。(會在后面詳細解釋)再將屏幕 “更新”。(這行是必須寫的,不然屏幕不會顯示)
當(dāng)用戶按下等號的,字串符就停止增加,開始計算。Eval 是專門用來計算字串符的,當(dāng)計算后,將計算好的數(shù)字顯示出來,最后將字串符清零。代碼:a = str(eval(num)) #計算字串符
word = t.render(a,True,(0,0,0),(225,225,225))
screen.blit(word,p)
num = "" #字串符清空
pygame.display.update()
圖片處理
一個簡易的計算器原理已經(jīng)可以做出來了,但是要讓用戶直觀的看到按鈕,比如按鍵,就需要導(dǎo)入圖片了
Pygame 的圖片可以使用.png的格式,可以自己畫,也可以從網(wǎng)上搜。我就是自己用畫圖板畫的:
Pygame 導(dǎo)入圖片XXX = pygame.image.load("XXX/XXX.png")
獲取用戶是否按下這個按鍵需要就是一個if語句,代碼如下:
while True:
one = pygame.image.load("E://XXX/py1.png")
···
if event.type == pygame.MOUSEBUTTONDOWN:
x, y = pygame.mouse.get_pos()
if XXX <= x <= XXX and XXX <= y <= XXX: # 1的位置
num += str(1)
word = t.render(num, True, (0, 0, 0), (225, 225, 225))
screen.blit(word, p)
pygame.display.update()
第五行的 “x”和“y” 是獲取用戶鼠標(biāo)的位置。
在第六行,前兩個XXX是定位圖片的x軸,后兩個XXX是定位圖片y軸。
其實,你只需定位第一個和第三個位置即可。每張圖片都有寬,長,比如你要對當(dāng)用戶按下一個長寬都是100的圖片,同時,要將這個代碼定位在,(0,0)的位置,看代碼:
while True:
···
if event.type==pygame.MOUSEBUTTONDOWN:
x, y = pygame.mouse.get_pos()
if 0 <= x <= 100 and 0 <= y<= 100:
···
對于一些不知道怎樣得知圖片的長寬的小白,底下有張圖片,
鍵盤處理
先看代碼
while True:
···
if event.type == KEYDOWN:
if event.key == K_1 or event.key == K_KP1: #1
num += str(1)
word = t.render(num,True,(0,0,0),(225,225,225))
screen.blit(word,p)
pygame.display.update()
pygame 給每一個鍵盤都命名了,比如說,1就是 “K_1”,小鍵盤1就是 “K_KP1”。也就是說,當(dāng)用戶按下K_1(數(shù)字鍵1)這個按鍵的時候,做出反應(yīng)。
Pygame 編程
Pygame 初始化
先配合著注釋閱讀代碼。
import sys
import pygame
from pygame.locals import * #pygame里有許多像pygame.XXX.YYY的形式
def calculater(): #calculater僅僅是我自己的定義
pygame.init() #初始化pygame
screen_size = width,height = XXXX, XXXX #這個是定義屏幕大小,根據(jù)自己電腦做出判斷
screen = pygame.display.set_mode(screen_size)
pygame.display.set_caption("計算器") #命名
··· #此處放方便自己的初始變量
c = (255,255,255)
#開始的顏色
screen.fill(c)
#一開始顯示的東西,比如按鍵,有空還可以自己畫個圖標(biāo),等等
screen.blit(X,(XXX,XXX))
#這句話很重要,表示顯示,沒有這句話,不會顯示的
pygame.display.flip()
while True:
#退出處理(當(dāng)用戶按退出鍵處理)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
exit()
······ #想寫就寫,呵呵
先導(dǎo)入 pygame 和 sys 兩個庫,接著是 “pygame.init“ 這起到了初始化的作用,根據(jù)自己的電腦,定義計算機的長和寬。
Pygame 的顏色是根據(jù)紅黃藍三色控制的,每一級最高為255,最低為0。比如(225,225,225)就是白色,(0,0,0)是黑色。
pygame.blit 是 pygame 的顯示圖片,文字的方法。接下來的退出處理其實就是一個事件處理器,不斷地獲取用戶的操作,并對用戶的操作作出反應(yīng)。
Pygame 文字
做什么也不能沒有字,比若說,顯示就需要顯示數(shù)字。先看代碼
t = pygame.font.SysFont("arial",32)
··· #想寫就寫,任性
num = "XXX" #想寫就寫,任性
word = t.render(num,True,(0,0,0),(225,225,225))
screen.blit(word,(XXX,XXX)) #XXX代表位置
首先,需要確認(rèn)字體,所有的電腦都會帶有字體,可以在 Font 文件夾里找到,這里就不再多說。
在第六行,這就是確認(rèn)文字的顏色和底色。(0,0,0)代表著顏色,這里是黑色,(225,225,225)代表底色,這里是黑色。最后在(xxx,xxx)的位置顯示出來。
有小白會跳出來問,第六行那個 True 改成 False 會怎么樣呢。放心,不會發(fā)生什么事,都不會給你顯示了。
Pygame 圖片
說了一堆,寫出程序后,最多顯示出一個白色的屏幕,按鍵顯示不出怎么行呢?
Pygame 有個函數(shù) blit. 由于顯示其他的內(nèi)容,剛講了文字,那里也用到 blit 函數(shù)。現(xiàn)在來講圖片的顯示方法
Pygame 所有需要用的圖片都需要先導(dǎo)入,這在前面已經(jīng)詳細講過,這里就不再多說。代碼如下:
ad = ("E://XXX/XXX/") #位置
XXX = pygame.image.load(ad + "XXX.png") #導(dǎo)入圖片
···
def pscreen():
screen.fill(225,225,225)
screen.blit(XXX,(300,300)) #位置
···
好了,差不多這個計算器程序的核心就是這些了,要不要一起來動手試試呢!
結(jié)語
講完了么?一些小白覺得看這篇文章太累了,沒有完整的代碼。那建議去
看看完整的代碼(可以直接拿來用)
現(xiàn)在,你應(yīng)該可以自己做出一個計算器了吧,其實不僅僅是計算器,你還可以用 pygame 來做出任意一個程序,只要肯花費些時間,還可以用 pygame 寫出一個簡易的系統(tǒng)。
The End
OK,今天的內(nèi)容就到這里,如果覺得內(nèi)容對你有所幫助,歡迎點贊轉(zhuǎn)發(fā)。
如果覺得不錯,希望能動動手指轉(zhuǎn)發(fā)給你身邊的朋友們。
總結(jié)
以上是生活随笔為你收集整理的python制作计算机程序_用 Python 开发实用程序 – 计算器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python sklearn 梯度下降法
- 下一篇: python小案例_Python的应用小