A matematikai számításokhoz számológépet használnak. Minden modern eszköznek van számológépe. Létre kell hoznia egy egyszerű Python-kódot az alapvető aritmetikai műveletek szöveges formában történő megvalósításához. Ebben a bejegyzésben megvitatjuk, hogyan lehet egyszerű számológépet létrehozni Pythonban grafikus felhasználói felülettel. A grafikus felhasználói felület a graphics.py modulban elérhető Graphics függvényekkel jön létre.
A rendelkezésre álló általános számológép-alkalmazások váltogathatók az alapvető, a bináris és a tudományos alkalmazások között. De a kód, amit itt csinálunk, nagyon alapvető. Másolhatja, bővítheti és használhatja. A kiterjesztett kódot megoszthatja velünk.
Tehát kezdjük és használjuk a Python Graphics metódusait (a graphics.py webhelyről ), amelyeket a korábbi bejegyzésekben megértettünk . Készítsünk egy kicsi és alapvető, de elképesztően izgalmas grafikus programot Pythonban.
1. lépés Az egyszerű számológép felülete a Pythonban
A grafikus felhasználói felülettel rendelkező Python egyszerű számológép létrehozásának első lépése a felület megtervezése. Az általunk létrehozott felület az alábbi képességekkel rendelkezik:
Írja be a számjegyeket a számgombok megnyomásával, és jelenítse meg a szöveges objektumban
Válassza ki a műveletet (összeadás/szorzás/kivonás/osztás) a kezelőgombokkal, és jelenítse meg az eredményt a szöveges objektumban
Egyenlő (=) gomb a kifejezés kiértékeléséhez és az eredmény megjelenítéséhez
Törölje a „C” gombot a szöveg objektum aktuális tartalmának törléséhez
A GraphWin osztálykonstruktor meghívása ablakobjektum létrehozására szolgál.
Létrejön egy szövegobjektum, amely tárolja a kattintott gombokat és operátorokat.
Téglalap alakú objektumok jönnek létre a szám és az operátor gombok formájában történő megjelenítésére.
Egy Téglalap objektum a tiszta gomb létrehozásához a szöveges objektum tartalmának törléséhez.
2. lépés A műveletek kódolása
A második lépés a funkcionalitás hozzáadása. Az ablak minden gombjának létrehozásakor a bal felső sarok koordinátái és a jobb alsó sarok koordinátái két tömbben tárolódnak (art és arrf).
Amikor a felhasználó rákattint, az adott pont koordinátáit a getMouse funkció segítségével olvassa ki. összehasonlítjuk a két tömbben tárolt pontkoordinátákkal. Ez annak meghatározására szolgál, hogy a felhasználó melyik gombra kattintott. Ennek használatával az érték egy karakterláncban tárolódik és megjelenik az eredmény Szöveg objektumban.
Amikor a felhasználó rákattint a „=” gomb téglalapjára, a rendszer kiértékeli az operátorokkal és számokkal készített karakterláncot. Kiértékeléshez a Python eval függvényt a karakterlánc paraméterként való átadásával hívjuk meg. Eredménye rajzolási módszerrel az eredmény Szövegobjektumba kerül
Itt található a grafikus felhasználói felülettel rendelkező Python Simple Calculator teljes forráskódja.
-------------------------
Neve: Graphics.py
import time
from graphics import *
def main():
workArea = GraphWin('A Simple Python timer', 250, 350) # adja meg a címet és a méreteket
workArea.setBackground('blue')
calexp=Rectangle(Point(50,10),Point(190,40))
calexp.setFill("yellow")
calexp.draw(workArea)
arrf=[]
arrt=[]
x=50
y=50
i=0
j=9
#hurok számgombok létrehozásához
while j>=0:
arrf.append(Point(x,y))
arrt.append(Point(x+50,y+50))
btn=Rectangle(Point(x,y),Point(x+50,y+50))
btn.setFill('white')
btn.draw(workArea)
num = Text(Point(x+25,y+25),str(j))
num.setFace('helvetica')#stílus beállítás
num.setStyle('bold italic')
num.setTextColor("blue") #szín beállítás
num.draw(workArea)
x=x+55
j=j-1
i=i+1
if (i==3):
x=50
y=y+55
i=0
ops=['+','-','*','/','=']
j=0
#hurok kezelőgombok létrehozásához
while j<len(ops):
arrf.append(Point(x,y))
arrt.append(Point(x+50,y+50))
btn=Rectangle(Point(x,y),Point(x+50,y+50))
btn.setFill('white')
btn.draw(workArea)
num = Text(Point(x+25,y+25),str(ops[j]))
num.setFace('helvetica')#Stílus
num.setStyle('bold italic')
num.setSize(24)
num.setTextColor("red") #szín
num.draw(workArea)
x=x+55
j=j+1
i=i+1
if (i==3):
x=50
y=y+55
i=0
#hozzon létre Törlés gombot
btn=Rectangle(Point(192,10),Point(222,40))
btn.setFill('green')
btn.draw(workArea)
arrf.append(Point(192,10))
arrt.append(Point(222,40))
num = Text(Point(192+15,10+15),'C')
num.setFace('helvetica')#stílus
num.setStyle('bold italic')
num.setTextColor("white") #szín
num.draw(workArea)
numv=""
clk=True
#hurok, hogy ellenőrizze a koordináták tartományát, ahol a felhasználó kattintott
while clk:
ch=workArea.getMouse()
if (ch.x >arrf[0].x and ch.x <arrt[0].x and ch.y >arrf[0].y and ch.y<arrt[0].y):
numv=numv+"9"
if (ch.x >arrf[1].x and ch.x <arrt[1].x and ch.y >arrf[1].y and ch.y<arrt[1].y):
numv=numv+"8"
if (ch.x >arrf[2].x and ch.x <arrt[2].x and ch.y >arrf[2].y and ch.y<arrt[2].y):
numv=numv+"7"
if (ch.x >arrf[3].x and ch.x <arrt[3].x and ch.y >arrf[3].y and ch.y<arrt[3].y):
numv=numv+"6"
if (ch.x >arrf[4].x and ch.x <arrt[4].x and ch.y >arrf[4].y and ch.y<arrt[4].y):
numv=numv+"5"
if (ch.x >arrf[5].x and ch.x <arrt[5].x and ch.y >arrf[5].y and ch.y<arrt[5].y):
numv=numv+"4"
if (ch.x >arrf[6].x and ch.x <arrt[6].x and ch.y >arrf[6].y and ch.y<arrt[6].y):
numv=numv+"3"
if (ch.x >arrf[7].x and ch.x <arrt[7].x and ch.y >arrf[7].y and ch.y<arrt[7].y):
numv=numv+"2"
if (ch.x >arrf[8].x and ch.x <arrt[8].x and ch.y >arrf[8].y and ch.y<arrt[8].y):
numv=numv+"1"
if (ch.x >arrf[9].x and ch.x <arrt[9].x and ch.y >arrf[9].y and ch.y<arrt[9].y):
numv=numv+"0"
if (ch.x >arrf[10].x and ch.x <arrt[10].x and ch.y >arrf[10].y and ch.y<arrt[10].y):
numv=numv+"+"
if (ch.x >arrf[11].x and ch.x <arrt[11].x and ch.y >arrf[11].y and ch.y<arrt[11].y):
numv=numv+"-"
if (ch.x >arrf[12].x and ch.x <arrt[12].x and ch.y >arrf[12].y and ch.y<arrt[12].y):
numv=numv+"*"
if (ch.x >arrf[13].x and ch.x <arrt[13].x and ch.y >arrf[13].y and ch.y<arrt[13].y):
numv=numv+"/"
if (ch.x >arrf[14].x and ch.x <arrt[14].x and ch.y >arrf[14].y and ch.y<arrt[14].y):
#Értékelje és jelenítse meg a kifejezést
num.undraw()
num = Text(Point(150-len(str(numv)),25),str(eval(numv)))
num.draw(workArea)
numv=str(eval(numv))
continue
if (ch.x >arrf[15].x and ch.x <arrt[15].x and ch.y >arrf[15].y and ch.y<arrt[15].y):
numv=" "
if (ch.x >249):
break
calexp=Rectangle(Point(50,10),Point(190,40))
calexp.setFill("yellow")
calexp.draw(workArea)
num = Text(Point(150-len(str(numv)),25),str(numv))
num.draw(workArea)
main()
----------------------------------------
Az eredmény grafikája
Nincsenek megjegyzések:
Megjegyzés küldése