Python poskytuje množstvo nástrojov pre dátovú vedu, web a vývoj pre Android. Ale jedným z najlepších nástrojov, pokiaľ ide o programovací jazyk Python, je Tkinter pre grafické používateľské rozhranie. Knižnica Tkinter v pythone poskytuje GUI widgety, ktoré pomáhajú vytvárať užívateľsky prívetivé aplikácie. Tkinter sa ľahko používa, je ľahký a rýchly. Tkinter nemusíte inštalovať explicitne, pretože je predinštalovaný s Pythonom.
Pred pokračovaním v tomto návode by ste mali poznať základy balíka Tkinter v Pythone.
Základné nastavenie aplikácie
1. Import modulu
Prvým krokom pri zostavovaní aplikácie je import modulu. Pri importe modulu Tkinter budete musieť vytvoriť inštanciu objektu ttk .
import tkinter as ttk
2. Vytvorenie premennej okna
Ak chcete vytvoriť okno, musíte vytvoriť objekt okna pomocou ttk . Po vytvorení objektu okna môžete oknu priradiť názov a geometriu. Geometria nastaví výšku a šírku okna.
win = ttk.Tk() win.title('Simple Calculator') win.geometry('500x500')
3. Hlavná slučka
Metóda mainloop() spúšťa okno v nekonečnej slučke. Beží nepretržite, pokiaľ používateľ nezatvorí okno manuálne.
win.mainloop()
Súvisiace: Začať vytvárať Desktop aplikácie v jazyku Python S Tkinter GUI knižnice
Vytváranie používateľského rozhrania
Balík Tkinter v Pythone má veľa widgetov, ktoré pomáhajú vytvárať užívateľsky prívetivé návrhy. Widgety použité v tomto projekte sú tlačidlá a textové polia. Pre tento projekt potrebujete nasledujúce tlačidlá: 0-9 čísel, sčítanie , odčítanie , násobenie , delenie , vymazať , vymazať , vypočítať .
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)
Widget tlačidla akceptuje mnoho argumentov: objekt okna, text zobrazený na tlačidle, štýl písma atď. Prijíma aj argument príkazu, ktorý spúšťa funkciu alebo metódu pri kliknutí na tlačidlo.
Ak chcete zarovnať tlačidlá v riadkoch a stĺpcoch pre používateľsky prívetivé používateľské rozhranie, použite atribút mriežky . Mriežka atribútu možno uviesť číslo riadka a číslo stĺpca ako argumenty zodpovedajúcim spôsobom zladiť tlačidiel.
numericEq = ttk.StringVar() dataField = ttk.Entry(win, textvariable=numericEq, font="Serif 15") dataField.grid(row=0,columnspan=3, ipadx=80, ipady=15)
Entry widget je textové pole v balíčku Python Tkinter. Pole Vstup zvyčajne akceptuje veľa argumentov, ale jedným z najdôležitejších a požadovaných argumentov je textová premenná . Užívateľ môže písať do poľa Vstup kvôli tomuto argumentu. Vo vyššie uvedenom kóde je premennej s názvom numericEq priradený atribút ttk.StringVar() na spravovanie widgetu Entry .
Súvisiace: Učíte sa Python? Tu je návod, ako manipulovať so strunami
Súbor Python môžete spustiť pomocou príkazu python názov_súboru.py . Aplikácia vyzerá takto:
Ako sme už spomenuli, widget Button má atribút príkazu, ktorý akceptuje funkciu alebo metódu, ktorá sa má volať. Metódy, ktoré prešli po kliknutí na tlačidlá, používajú funkciu lambda .
Číselné tlačidlá pozostávajú z hodnôt od 0 do 9 a aritmetické tlačidlá sú +, -, x, / pre účely výpočtu.
Metóda addToEq() sa zavolá po kliknutí na tlačidlo. Táto metóda odovzdáva čísla alebo aritmetické operátory v závislosti od tlačidla, na ktoré kliknete. Po odovzdaní hodnoty sa čísla alebo operátory uložia do premennej calcValue . Pred uložením hodnoty alebo operátora do premennej calcValue ho musíte skonvertovať na typ reťazca pomocou metódy str() .
def addToEq(x): calcValue = calcValue + str(x) numericEq.set(calcValue)
Tlačidlo s označením cal vypočíta celý reťazec uložený v premennej calcValue . Funkcia eval() pomáha vykonávať aritmetické operácie s premennou calcValue a vrátiť súčet. Po získaní hodnoty nastavte celkovú hodnotu v premennej numericEq . Na numericEq variabilný zobrazuje táto hodnota vo vstupnom poli.
def calculateEq(): total = str(eval(calcValue)) numericEq.set(total)
Tlačidlom vymazať sa vymaže pole Vstup . Po kliknutí na tlačidlo vymazať sa zavolá metóda clearInput() . Premenná calcValue je nastavená na prázdny reťazec a je uložená v poli Entry .
def clearInput(): calcValue = "" numericEq.set("")
Po implementácii všetkých týchto metód bude výstup kódu vyzerať takto:
Projekty sú najlepším spôsobom, ako zlepšiť svoje kódovacie zručnosti
Teraz, keď ste sa naučili, ako vytvoriť jednoduchú kalkulačku pomocou GUI v Python Tkinter, je čas, aby ste preskúmali ďalšie balíky Pythonu. Python má množstvo balíkov, ktoré vám pomôžu vytvoriť akúkoľvek aplikáciu, o ktorej môžete snívať.
Ako už pravdepodobne viete, projekty sú najlepší spôsob, ako predviesť svoje schopnosti. Budovanie projektov vám pomôže dobre sa zorientovať v jazyku a zostaviť si životopis.