pos機(jī)設(shè)計(jì)程序,用 Python 開(kāi)發(fā)實(shí)用程序 – 計(jì)算器

 新聞資訊  |   2023-04-20 12:57  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)設(shè)計(jì)程序,用 Python 開(kāi)發(fā)實(shí)用程序 – 計(jì)算器的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)設(shè)計(jì)程序的問(wèn)題,今天pos機(jī)之家(www.shineka.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!

本文目錄一覽:

1、pos機(jī)設(shè)計(jì)程序

pos機(jī)設(shè)計(jì)程序

一段時(shí)間前,自己制作了一個(gè)庫(kù) “sui-math”。 這其實(shí)是 math 的翻版。 做完后,我又想到,Python 既然可以輕易的完成任何的數(shù)學(xué)計(jì)算,何不用 python 開(kāi)發(fā)一個(gè)小程序?qū)iT(mén)用以計(jì)算呢?

今天就讓我們走進(jìn)計(jì)算器的世界,用 python 來(lái)編寫(xiě)一個(gè)可以用的計(jì)算器。

廢話不多說(shuō),先來(lái)看看整體效果

編寫(xiě)思路

用戶可以通過(guò)鼠標(biāo)或鍵盤(pán)來(lái)輸入或刪除數(shù)字或符號(hào),按下等號(hào)便可計(jì)算。

本教程借助 python 的 pygame 庫(kù)來(lái)實(shí)現(xiàn)程序。當(dāng)然,看完本教程后,你還可以通過(guò)利用,pygame 來(lái)這制作小游戲。所以下面稍稍介紹一下 pygame 及其安裝。

入門(mén)Python其實(shí)很容易,但是我們要去堅(jiān)持學(xué)習(xí),每一天堅(jiān)持很困難,我相信很多人學(xué)了一個(gè)星期就放棄了,為什么呢?其實(shí)沒(méi)有好的學(xué)習(xí)資料給你去學(xué)習(xí),你們是很難堅(jiān)持的,這是小編收集的Python入門(mén)學(xué)習(xí)資料關(guān)注,轉(zhuǎn)發(fā),私信小編“01”,即可免費(fèi)領(lǐng)??!希望對(duì)你們有幫助

當(dāng)然,首先是需要安裝 pygame

pip install -U pygame計(jì)算器關(guān)鍵邏輯

其實(shí)邏輯就是不斷地獲取用戶的操作,直到用戶按下 quit 鍵(關(guān)閉)。我們可以把這個(gè)不斷獲取操作,并不斷的操作做出反應(yīng)過(guò)程叫做:事件處理器。

那怎么做出一個(gè)“事件處理器”呢?其實(shí),就是一個(gè)大大的 “while True:” 把從啟動(dòng)到結(jié)束,對(duì)用戶所有的操作做出的反應(yīng)給包起來(lái)。這讀起來(lái)有點(diǎn)繞口,等會(huì)會(huì)有詳細(xì)的代碼。

如何計(jì)算

對(duì)于其他的語(yǔ)言來(lái)說(shuō),計(jì)算是個(gè)大大的問(wèn)題。但 python 不同,它有個(gè)特殊的內(nèi)置函數(shù),叫做eval。這個(gè)只有四個(gè)字母的函數(shù),解決了計(jì)算器的運(yùn)算。

打個(gè)比方:現(xiàn)在已經(jīng)可以獲取用戶所作出的操作,比如說(shuō)按下符號(hào),或者是數(shù)字。但是,怎么知道用戶會(huì)在按下等號(hào)前,按下多少個(gè)符號(hào)和數(shù)字呢?用戶有可能按1個(gè)數(shù)字,也有可能按一百個(gè)數(shù)字,可能是一個(gè)符號(hào),可能是好幾個(gè)符號(hào)。

因此,不妨設(shè)定一個(gè)變量,一個(gè)空的字串符。

num = ""

每當(dāng)用戶按下一個(gè)數(shù)字或者一個(gè)符號(hào),就在這個(gè)字串符里增加這個(gè)數(shù)字和符號(hào)。每次按下這個(gè)字串符后,就在屏幕里顯示這個(gè)字串符。舉個(gè)最簡(jiǎn)單的例子:

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” 的時(shí)候,num 就會(huì)增加字串符1。第2,3行實(shí)現(xiàn)了在屏幕上顯示這個(gè)字串符。(會(huì)在后面詳細(xì)解釋)再將屏幕 “更新”。(這行是必須寫(xiě)的,不然屏幕不會(huì)顯示)

當(dāng)用戶按下等號(hào)的,字串符就停止增加,開(kāi)始計(jì)算。Eval 是專門(mén)用來(lái)計(jì)算字串符的,當(dāng)計(jì)算后,將計(jì)算好的數(shù)字顯示出來(lái),最后將字串符清零。代碼:

a = str(eval(num)) #計(jì)算字串符

word = t.render(a,True,(0,0,0),(225,225,225))

screen.blit(word,p)

num = "" #字串符清空

pygame.display.update()

圖片處理

一個(gè)簡(jiǎn)易的計(jì)算器原理已經(jīng)可以做出來(lái)了,但是要讓用戶直觀的看到按鈕,比如按鍵,就需要導(dǎo)入圖片了

Pygame 的圖片可以使用.png的格式,可以自己畫(huà),也可以從網(wǎng)上搜。我就是自己用畫(huà)圖板畫(huà)的:

Pygame 導(dǎo)入圖片

XXX = pygame.image.load("XXX/XXX.png")

獲取用戶是否按下這個(gè)按鍵需要就是一個(gè)if語(yǔ)句,代碼如下:

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)的位置。

在第六行,前兩個(gè)XXX是定位圖片的x軸,后兩個(gè)XXX是定位圖片y軸。

其實(shí),你只需定位第一個(gè)和第三個(gè)位置即可。每張圖片都有寬,長(zhǎng),比如你要對(duì)當(dāng)用戶按下一個(gè)長(zhǎng)寬都是100的圖片,同時(shí),要將這個(gè)代碼定位在,(0,0)的位置,看代碼:

while True: ··· if event.type==pygame.MOUSEBUTTONDOWN: x, y = pygame.mouse.get_pos() if 0 <= x <= 100 and 0 <= y<= 100: ···

對(duì)于一些不知道怎樣得知圖片的長(zhǎng)寬的小白,底下有張圖片,

鍵盤(pán)處理

先看代碼

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 給每一個(gè)鍵盤(pán)都命名了,比如說(shuō),1就是 “K_1”,小鍵盤(pán)1就是 “K_KP1”。也就是說(shuō),當(dāng)用戶按下K_1(數(shù)字鍵1)這個(gè)按鍵的時(shí)候,做出反應(yīng)。

若是想要pygame的鍵盤(pán)對(duì)印表,請(qǐng)到https://github.com/duoduo666/jisuanba_pygame_jisuanji

這個(gè)地址(也是我的github),里面也有完整的代碼。

Pygame 編程Pygame 初始化

先配合著注釋閱讀代碼。

import sys import pygame from pygame.locals import * #pygame里有許多像pygame.XXX.YYY的形式 def calculater(): #calculater僅僅是我自己的定義 pygame.init() #初始化pygame screen_size = width="360px",height="auto" />

先導(dǎo)入 pygame 和 sys 兩個(gè)庫(kù),接著是 “pygame.init“ 這起到了初始化的作用,根據(jù)自己的電腦,定義計(jì)算機(jī)的長(zhǎng)和寬。

Pygame 的顏色是根據(jù)紅黃藍(lán)三色控制的,每一級(jí)最高為255,最低為0。比如(225,225,225)就是白色,(0,0,0)是黑色。

pygame.blit 是 pygame 的顯示圖片,文字的方法。接下來(lái)的退出處理其實(shí)就是一個(gè)事件處理器,不斷地獲取用戶的操作,并對(duì)用戶的操作作出反應(yīng)。

Pygame 文字

做什么也不能沒(méi)有字,比若說(shuō),顯示就需要顯示數(shù)字。先看代碼

t = pygame.font.SysFont("arial",32) ··· #想寫(xiě)就寫(xiě),任性 num = "XXX" #想寫(xiě)就寫(xiě),任性 word = t.render(num,True,(0,0,0),(225,225,225)) screen.blit(word,(XXX,XXX)) #XXX代表位置

首先,需要確認(rèn)字體,所有的電腦都會(huì)帶有字體,可以在 Font 文件夾里找到,這里就不再多說(shuō)。

在第六行,這就是確認(rèn)文字的顏色和底色。(0,0,0)代表著顏色,這里是黑色,(225,225,225)代表底色,這里是黑色。最后在(xxx,xxx)的位置顯示出來(lái)。

有小白會(huì)跳出來(lái)問(wèn),第六行那個(gè) True 改成 False 會(huì)怎么樣呢。放心,不會(huì)發(fā)生什么事,都不會(huì)給你顯示了。

Pygame 圖片

說(shuō)了一堆,寫(xiě)出程序后,最多顯示出一個(gè)白色的屏幕,按鍵顯示不出怎么行呢?

Pygame 有個(gè)函數(shù) blit. 由于顯示其他的內(nèi)容,剛講了文字,那里也用到 blit 函數(shù)?,F(xiàn)在來(lái)講圖片的顯示方法

Pygame 所有需要用的圖片都需要先導(dǎo)入,這在前面已經(jīng)詳細(xì)講過(guò),這里就不再多說(shuō)。代碼如下:

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)) #位置 ···

好了,差不多這個(gè)計(jì)算器程序的核心就是這些了,要不要一起來(lái)動(dòng)手試試呢!

結(jié)語(yǔ)

講完了么?一些小白覺(jué)得看這篇文章太累了,沒(méi)有完整的代碼。那建議去

https://github.com/duoduo666/jisuanba_pygame_jisuanji/blob/master/代碼.py

看看完整的代碼(可以直接拿來(lái)用)

現(xiàn)在,你應(yīng)該可以自己做出一個(gè)計(jì)算器了吧,其實(shí)不僅僅是計(jì)算器,你還可以用 pygame 來(lái)做出任意一個(gè)程序,只要肯花費(fèi)些時(shí)間,還可以用 pygame 寫(xiě)出一個(gè)簡(jiǎn)易的系統(tǒng)。

若是在使用我寫(xiě)的計(jì)算器的時(shí)候,發(fā)現(xiàn) bug,請(qǐng)?jiān)?github 的 issue塊 留言,一定會(huì)在第一時(shí)間回復(fù)的!

以上就是關(guān)于pos機(jī)設(shè)計(jì)程序,用 Python 開(kāi)發(fā)實(shí)用程序 – 計(jì)算器的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)設(shè)計(jì)程序的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://www.shineka.com/news/20876.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。