Nyheter i Android, Telefoner, Prylar Och Recensioner

Hur man bygger en miniräknare i Tkinter

Python tillhandahåller massor av verktyg för datavetenskap, webb- och Android-utveckling. Men ett av de bästa verktygen när det kommer till programmeringsspråket Python är Tkinter för grafiskt användargränssnitt. Tkinter-biblioteket i python tillhandahåller GUI-widgets som hjälper till att skapa användarvänliga applikationer. Tkinter är lätt att använda, lätt och snabbt. Du behöver inte installera Tkinter explicit eftersom det kommer förinstallerat med Python.

Du bör känna till grunderna i Tkinter-paketet i Python innan du fortsätter med denna handledning.

Grundläggande inställningar för appen

1. Importera modulen

Det första steget för att bygga appen är att importera modulen. När du importerar Tkinter-modulen måste du instansiera ttk objekt.

import tkinter as ttk 

2. Skapa fönstervariabeln

För att skapa ett fönster måste du skapa ett fönsterobjekt med hjälp av ttk. När du har skapat ett fönsterobjekt kan du tilldela fönstret en titel och geometri. Geometrin kommer att ställa in fönstrets höjd och bredd.

win = ttk.Tk()
win.title('Simple Calculator')
win.geometry('500x500')

3. MainLoop

De mainloop() metoden kör fönstret i en oändlig slinga. Den körs kontinuerligt om inte användaren stänger fönstret manuellt.

win.mainloop() 

Bygga UI

Tkinter-paketet i Python har många widgets som hjälper till att göra användarvänliga mönster. Widgetarna som används i detta projekt är knapp och text fält. För detta projekt behöver du följande knappar: 0-9 tal, Lägg till, subtrahera, multiplikation, division, klar, radera, Beräkna.

oneButton = ttk.Button(win, text="1", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(1))
oneButton.grid(row=2, column=0,padx=2, pady=3)
twoButton = ttk.Button(win, text="2", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(2))
twoButton.grid(row=2, column=1, padx=2, pady=3)
threeButton = ttk.Button(win, text="3", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(3))
threeButton.grid(row=2, column=2, padx=2, pady=3)
plusButton = ttk.Button(win, text="+", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq("+"))
plusButton.grid(row=2, column=3, padx=2, pady=3)
# div 2
fourButton = ttk.Button(win, text="4", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(4))
fourButton.grid(row=3, column=0, padx=2, pady=3)
fiveButton = ttk.Button(win, text="5", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(5))
fiveButton.grid(row=3, column=1, padx=2, pady=3)
sixButton = ttk.Button(win, text="6", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(6))
sixButton.grid(row=3, column=2, padx=2, pady=3)
minusButton = ttk.Button(win, text="-", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq("-"))
minusButton.grid(row=3, column=3, padx=2, pady=3)
# div 3
sevenButton = ttk.Button(win, text="7", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(7))
sevenButton.grid(row=4, column=0, padx=2, pady=3)
eightButton = ttk.Button(win, text="8", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(8))
eightButton.grid(row=4, column=1, padx=2, pady=3)
nineButton = ttk.Button(win, text="9", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(9))
nineButton.grid(row=4, column=2, padx=2, pady=3)
muxButton = ttk.Button(win, text="x", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq("*"))
muxButton.grid(row=4, column=3, padx=2, pady=3)
#div 4
zeroButton = ttk.Button(win, text="0", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(0))
zeroButton.grid(row=5, column=0, padx=2, pady=3)
clearButton = ttk.Button(win, text="clr", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=clearInput)
clearButton.grid(row=5, column=1, padx=2, pady=3)
calculateButton = ttk.Button(win, text="cal", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=calculateEq)
calculateButton.grid(row=5, column=2, padx=2, pady=3)
divideButton = ttk.Button(win, text="/", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq("/"))
divideButton.grid(row=5, column=3, padx=2, pady=3)

Knappwidgeten accepterar många argument: fönsterobjektet, text som visas på knappen, teckensnittsstil, etc. Den accepterar också ett kommandoargument som kör en funktion eller metod när du klickar på knappen.

Relaterad  Hur du rengör din Windows-dator: Den ultimata checklistan

För att justera knappar i rader och kolumner för ett användarvänligt gränssnitt, använd rutnät attribut. De rutnät attribut accepterar radnumret och kolumnnumret som argument för att justera knapparna därefter.

numericEq = ttk.StringVar()
dataField = ttk.Entry(win, textvariable=numericEq, font="Serif 15")
dataField.grid(row=0,columnspan=3, ipadx=80, ipady=15)

De Inträde widget är textrutan i Python Tkinter-paketet. Vanligtvis Inträde fältet accepterar många argument – ​​men ett av de mest avgörande och nödvändiga argumenten är textvariabel. Användaren kan skriva in Inträde fältet på grund av detta argument. I koden ovan, en variabel som heter numericEq tilldelas ett attribut ttk.StringVar() att hantera Inträde widget.

Du kan köra Python-filen med hjälp av python filnamn.py kommando. Applikationen ser ut så här:

Lägga till funktionalitet till knappar:

Som vi nämnde tidigare, Knapp widgeten har ett kommandoattribut som accepterar en funktion eller metod som ska anropas. Metoderna som passeras när knapparna klickas använder lambdafunktionen.

1. Numeriska och aritmetiska knappar

De numeriska knapparna består av värden från 0-9 och aritmetikknapparna är +, -, x, / för beräkningsändamål.

De addToEq() metoden anropas när du klickar på knappen. Denna metod skickar siffror eller aritmetiska operatorer beroende på vilken knapp du klickar på. Efter att ha passerat värdet lagras siffrorna eller operatorerna i calcValue variabel. Innan du lagrar värdet eller operatorn i calcValue variabel måste du konvertera den till strängtyp med hjälp av str() metod.

def addToEq(x):
calcValue = calcValue + str(x)
numericEq.set(calcValue)

2. Beräkna knappar

Knappen med etiketten cal beräknar hela strängen som är lagrad i calcValue variabel. Funktionen eval() hjälper till att utföra aritmetiska operationer på calcValue variabel och returnera summan. När du har hämtat värdet, ställ in total värde i numericEq variabel. De numericEq variabeln visar detta värde i Inträde låda.

def calculateEq():
total = str(eval(calcValue))
numericEq.set(total)

3. Rensa-knapp

De klar knappen rensar Inträde låda. När du klickar på klar knappen, den clearInput() metod kallas. Variabeln calcValue är inställd på en tom sträng och den lagras i Inträde låda.

def clearInput():
calcValue = ""
numericEq.set("")

När du implementerar alla dessa metoder ser utdata av koden ut så här:

Relaterad  Hur man inaktiverar Windows Search på Windows 11

Projekt är det bästa sättet att förbättra dina kodningsfärdigheter

Nu när du har lärt dig hur du bygger en enkel kalkylator med GUI i Python Tkinter, är det dags för dig att utforska andra Python-paket. Python har en mängd olika paket som hjälper dig att bygga alla program du kan tänka dig.

Som du förmodligen redan vet är projekt det bästa sättet att visa upp dina färdigheter. Byggprojekt hjälper dig att få ett bra grepp om språket och bygga ditt CV.

Om författaren

Unnati Bamania (14 artiklar publicerade)

Unnati är en entusiastisk fullstack-utvecklare. Hon älskar att bygga projekt med hjälp av olika programmeringsspråk. I henne free tid, hon älskar att spela gitarr och är en matlagningsentusiast.

Mer från Unnati Bamania

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, free e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera

Relaterad  Kindle och Kindle Paperwhite till försäljning lagom till jul