A Python számos eszközt biztosít az adattudományhoz, a web- és az Android-fejlesztéshez. De a Python programozási nyelv egyik legjobb eszköze a Tkinter for Graphical User Interface. A python Tkinter könyvtára grafikus felületi widgeteket biztosít, amelyek segítenek felhasználóbarát alkalmazások létrehozásában. A Tkinter könnyen használható, könnyű és gyors. Nem kell kifejezetten telepítenie a Tkintert, mivel előre telepítve van a Pythonnal.
Mielőtt folytatná ezt az oktatóanyagot, ismernie kell a Python Tkinter-csomagjának alapjait.
Alapbeállítások az alkalmazáshoz
1. A modul importálása
Az alkalmazás létrehozásának első lépése a modul importálása. A Tkinter modul importálása közben példányosítania kell a ttk objektumot.
import tkinter as ttk
2. Az ablakváltozó létrehozása
Ablak létrehozásához létre kell hoznia egy ablak objektumot a ttk használatával . Az ablakobjektum létrehozása után az ablakhoz címet és geometriát rendelhet. A geometria beállítja az ablak magasságát és szélességét.
win = ttk.Tk() win.title('Simple Calculator') win.geometry('500x500')
3. MainLoop
A mainloop() metódus végtelen ciklusban futtatja az ablakot. Folyamatosan fut, hacsak a felhasználó nem zárja be kézzel az ablakot.
win.mainloop()
Kapcsolódó: Kezdet létrehozása asztali alkalmazások Python A Tkinter GUI Library
A felhasználói felület építése
A Pythonban található Tkinter-csomag számos widgetet tartalmaz, amelyek segítik a felhasználóbarát tervezést. A projektben használt widgetek gombok és szövegmezők . Ehhez a projekthez a következő gombokra van szüksége: 0-9 számok, összeadás , kivonás , szorzás , osztás , törlés , törlés , számítás .
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)
A gomb widget sok argumentumot fogad el: az ablak objektumot, a gombon megjelenő szöveget, betűstílust stb. Elfogad egy olyan parancs argumentumot is, amely a gombra kattintva futtat egy függvényt vagy metódust.
A gombok sorokban és oszlopokban történő igazításához egy felhasználóbarát felhasználói felület érdekében használja a grid attribútumot. A grid attribútum elfogadja a sorszámot és az oszlopszámot argumentumként a gombok megfelelő igazításához.
numericEq = ttk.StringVar() dataField = ttk.Entry(win, textvariable=numericEq, font="Serif 15") dataField.grid(row=0,columnspan=3, ipadx=80, ipady=15)
Az Entry widget a Python Tkinter csomag szövegdoboza. Az Entry mező általában sok argumentumot fogad el, de az egyik legfontosabb és legkövetelményesebb argumentum a textvariable . Ezen argumentum miatt a felhasználó beírhatja a Bevitel mezőt. A fenti kódban a numericEq nevű változóhoz egy ttk.StringVar() attribútum van hozzárendelve az Entry widget kezeléséhez .
Kapcsolódó: Python tanulás? Íme, hogyan kell manipulálni a karakterláncokkal
A Python fájlt a python file_name.py paranccsal futtathatja . Az alkalmazás így néz ki:
Amint azt korábban említettük, a Button widgetnek van egy parancsattribútuma, amely elfogadja a meghívandó függvényt vagy metódust. A gombokra kattintva átadott módszerek a lambda funkciót használják .
A számgombok 0-tól 9-ig terjedő értékekből állnak, az aritmetikai gombok pedig a +, -, x, / számítási célból.
Az addToEq() metódus a gombra kattintva meghívódik. Ez a módszer a rákattintott gombtól függően számokat vagy aritmetikai operátorokat ad át. Az érték átadása után a számok vagy operátorok a calcValue változóban tárolódnak . Mielőtt az értéket vagy operátort a calcValue változóban tárolná , az str() metódussal karakterlánc típusra kell konvertálnia .
def addToEq(x): calcValue = calcValue + str(x) numericEq.set(calcValue)
A cal feliratú gomb a calcValue változóban tárolt teljes karakterláncot kiszámítja . Az eval() függvény segít aritmetikai műveletek végrehajtásában a calcValue változón, és visszaadja az összeget. Az érték lekérése után állítsa be a teljes értéket a numericEq változóban. A numericEq változó ezt az értéket jeleníti meg az Entry mezőben.
def calculateEq(): total = str(eval(calcValue)) numericEq.set(total)
A törlés gomb törli a Belépés mezőt. A törlés gombra kattintva a clearInput() metódus meghívódik. A calcValue változó üres karakterláncra van állítva, és az Entry mezőben tárolódik .
def clearInput(): calcValue = "" numericEq.set("")
Miután végrehajtotta ezeket a módszereket, a kód kimenete így néz ki:
A projektek a legjobb módja a kódolási készségek fejlesztésének
Most, hogy megtanulta, hogyan lehet egyszerű számológépet készíteni a Python Tkinter grafikus felhasználói felületével, itt az ideje, hogy felfedezzen más Python-csomagokat. A Python számos csomaggal rendelkezik, amelyek segítenek bármilyen alkalmazás elkészítésében, amelyet csak megálmodhatsz.
Amint azt valószínűleg már tudja, a projektek a legjobb módja annak, hogy bemutassa képességeit. Az építési projektek segítenek a nyelv megfelelő megértésében és az önéletrajz elkészítésében.