A naptár készítése nagyszerű módja annak, hogy megismerkedjen a GUI-alkalmazások létrehozásával a Python Tkinter moduljával. Ezzel az alkalmazással eseményeket előre kezelhet és megtervezhet.
Továbbfejlesztve az alkalmazást kiterjesztheti a közelgő találkozók nyomon követésére, és emlékeztetőket állíthat be. Az ütemezési ütközések elkerülése érdekében akár együttműködést is bevezethet más felhasználók naptáraival.
Minden a GUI-naptár alkalmazás alapvető vázával kezdődik.
A Calendar, Tkinter és DateTime modulok
A grafikus felhasználói felület naptárának elkészítéséhez a Calendar, a Tkinter és a DateTime modult kell használni. A Naptár modul a Pythonhoz tartozik, és lehetővé teszi a dátummal, hónapokkal és naptárral kapcsolatos műveletek végrehajtását.
A Tkinter lehetővé teszi az asztali alkalmazások létrehozását. Különféle widgeteket, hasznos könyvtárakat, vászonobjektumokat és HTML/XML/PDF elemzőket kínál. GUI-alkalmazás létrehozásához mindössze annyit kell tennie, hogy:
- Importálja a könyvtárat.
- Hozzon létre egy ablakot.
- Adjon hozzá widgeteket az ablakhoz.
- Hívja meg a fő eseményhurkot a felhasználói interakción alapuló műveletek végrehajtásához.
A Tkinter rendszerbe való telepítéséhez nyisson meg egy terminált, és futtassa:
pip install tkinter
A DateTime modul egy másik beépített modul. Számos osztályt kínál, amelyek a dátumokkal, időpontokkal és időintervallumokkal foglalkoznak. Ezzel a modullal eseményütemezőt építhet, egy ébresztőóra, dátumkalkulátor és időzóna alkalmazás.
GUI-naptár készítése Python használatával
A GUI-naptár forráskódja Python használatával ebben található GitHub adattár.
Kezdje a Tkinter, a Calendar és a DateTime modul importálásával. Határozzon meg egy függvényt, printCalendar. Használja a kap() módszert a Spinboxon (a kód későbbi részében definiálva) a felhasználó által kiválasztott hónap és év kinyeréséhez. Adja át ezeket az értékeket a naptármodulnak, hogy megkapja a megadott évet és hónapot reprezentáló formázott szöveges naptárat. Ez a szöveg egy egyszerű egyterű rácsot ábrázol, a napok hetekben vannak elrendezve, hétfőtől kezdődően.
Töröljön ki minden meglévő adatot a képernyőről. 1.0 a mező kezdetét jelzi, és vége a mező végét jelzi. Végül helyezze be a korábban generált naptárt, és jelenítse meg a képernyőn.
tól től tkinter import *
import naptár
tól től dátum idő import dátum
defprintCalendar():
hónap = int (month_box.get())
év = int (year_box.get())
output_calendar = naptár.hónap (év, hónap)
calendar_field.delete(1.0, 'vége')
calendar_field.insert('vége', output_naptár)
Határozzon meg egy függvényt, Visszaállítás. Törölje a képernyőn lévő tartalmat, és állítsa be a hónapot és évet a jelenre, és használja a config() módja annak, hogy megjelenítse a képernyőn.
defVisszaállítás():
calendar_field.delete(1.0, 'vége')
month_var.set (jelenlegi_hónap)
year_var.set (jelenlegi_év)
month_box.config (textvariable=month_var)
year_box.config (textvariable=year_var)
Határozzon meg egy függvényt, zárja be az ablak megjelenítésének törléséhez, és lépjen ki a programból.
defBezárás():
guiWindow.destroy()
Inicializálja a Tkinter-példányt, és jelenítse meg a gyökérablakot. Állítsa be a címet, a méreteket pixelben, és tiltsa le az átméretezést úgy, hogy a paramétereket 0-ban tartja.
ha __név__ == "__fő__":
guiWindow = Tk()
guiWindow.title("GUI naptár")
guiWindow.geometry("500x550")
guiWindow.resizable(0, 0)
Határozzon meg négy keretet a fejléc címéhez, a hónap és év bejegyzéséhez, a kijelzőhöz és a gombokhoz. Konténer funkciót lát el, irányítja a többi kütyü elhelyezését. Elrendezi az elrendezést, és a képernyő téglalap alakú szakaszaival kiegészíti ezeket a widgeteket.
Rendszerezze a kereteket blokkokba, mielőtt a guiwindowba helyezné őket a csomag() módszer. Állítsa a kibontás értékét igazra, hogy a widget átméretezzen és kibontsa a rendelkezésre álló területet. Állítsa be a tölt attribútumot mindkettőhöz, hogy a widget kibővüljön, és elfoglalja a teljes ablakot x és y irányban.
header_frame = Keret (guiWindow)
entry_frame = Keret (guiWindow)
result_frame = Keret (guiWindow)
button_frame = Keret (guiWindow)
header_frame.pack (expand=Igaz, fill="mindkét")
entry_frame.pack (expand=Igaz, fill="mindkét")
result_frame.pack (expand=Igaz, fill="mindkét")
button_frame.pack (expand=Igaz, fill="mindkét")
Adjon meg három címkét a fejléchez, hónaphoz és évhez. Állítsa be a szülőablakot, amelybe el szeretné helyezni, a megjelenítendő szöveget, a betűstílusokat és a betűszínt. Csomagolja be és helyezze el a címkéket a megfelelő helyre. Munkatárs IntVar() a... val entry_frame egész számok beállításához és fogadásához.
header_label = Címke (header_frame, text="NAPTÁR",
font=("arial", '45', 'bátor'), fg="#A020F0")header_label.pack (expand=Igaz, fill="mindkét")
month_label = Címke (bejegyzési_keret, szöveg="Hónap:",
font=("arial", "20", "bátor"), fg="#000000")year_label = Címke (bejegyzési_keret, szöveg="Év:",
font=("arial", "20", "bátor"), fg="#000000")
month_label.place (x=30, y=0)
év_címke.hely (x=275, y=0)
month_var = IntVar (entry_frame)
év_var = IntVar (bejegyzési_keret)
Szerezd meg az aktuális hónapot, évet, és állítsd be az IntVar() változóra. A Spinbox widget segítségével megadhat egy értéktartományt a felhasználó számára. Állítsa be az értéktartományt, amelyet a Spinbox tartalmazni fog, a szélességet, az aktuális értéket és a betűstílusokat. Helyezze el megfelelően a dobozokat.
aktuális_hónap = dátum.ma().hónap
aktuális_év = dátum.ma().év
month_var.set (jelenlegi_hónap)
year_var.set (jelenlegi_év)month_box = Spinbox (entry_frame, from_=1, to=12, szélesség="10",
textvariable=month_var, font=("arial",'15'))year_box = Spinbox (entry_frame, from_=0000, to=3000, szélesség="10",
textvariable=year_var, font=("arial",'15'))
month_box.place (x=130, y=5)
év_doboz.hely (x=360, y=5)
Deklaráljon egy szövegmezőt, és állítsa be a szülőablakát, szélességét, magasságát, betűstílusát, 3D animációs stílusát és szegélyszélességét. Rendszerezze a szöveges widgetet, és deklaráljon három gombot az ablak megjelenítéséhez, visszaállításához és bezárásához. A gombok további háttérszín tulajdonságot és parancstulajdonságot tartalmaznak.
A parancs tulajdonság segítségével beállíthatja, hogy kattintás után milyen függvényt kell végrehajtania. Helyezze a gombokat egyetlen sorba úgy, hogy közöttük legyen elegendő hely.
calendar_field = Szöveg (eredmény_keret, szélesség=20, magasság=8,
font=("futár", "18"), relief=RIDGE, borderwidth=2)calendar_field.pack()
display_button = Gomb (button_frame, text="KIJELZŐ", bg="#A020F0",
fg="#E0FFFF", command=printCalendar, font=("arial", '15'))reset_button = Gomb (button_frame, text="VISSZAÁLLÍTÁS", bg="#A020F0",
fg="#E0FFFF", parancs=reset, font=("arial",'15'))close_button = Gomb (button_frame, text="BEZÁRÁS", bg="#A020F0",
fg="#E0FFFF", command=close, font=("arial",'15'))
display_button.place (x=55, y=0)
reset_button.place (x=210, y=0)
close_button.place (x=350, y=0)
A mainloop() függvény arra utasítja a Pythont, hogy futtassa a Tkinter eseményhurkot, és figyelje az eseményeket (például a gombnyomásokat), amíg be nem zárja az ablakot.
guiWindow.mainloop()
Helyezze össze az összes kódot, hogy működés közben lássa a grafikus felhasználói felület naptárát.
A GUI-naptár mintakimenete
A program futtatásakor a program felett egy ablak jelenik meg, amelyen az aktuális hónap és dátum látható. A Reset gombra kattintva ugyanaz a képernyő jelenik meg.
Ha a hónapot 3-ra, az évet pedig 2000-re állítja, a program megjeleníti a 2000. márciusi naptárat. A Bezárás gomb megnyomására a program tönkreteszi az ablakot és leállítja a végrehajtását.
Vegyünk néhány kezdő grafikus felhasználói felületet Python használatával
A GUI-alkalmazások készítése még soha nem volt ilyen egyszerű. A Python Tkinter modulja számos hasznos widgetet kínál, amelyeket nagyon kevés kóddal teljesen testreszabhat. Ezzel együtt hozzáférést kap az elrendezéskezelőkhöz, például a csomaghoz, a rácshoz és a helyhez, hogy az elemeket az Ön kívánsága szerint helyezze el.
A kezdéshez készíthet gépelési tesztjátékot, színpalettát, valutaváltót vagy számológépet. Ezeket az alkalmazásokat szórakoztató építeni, és könnyedén fejlesztik objektum-orientált programozási készségeit.