Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Vytvorenie kalendára je skvelý spôsob, ako sa dozvedieť o vytváraní GUI aplikácií pomocou modulu Tkinter v Pythone. Túto aplikáciu môžete použiť na správu a plánovanie udalostí vopred.

Aplikáciu môžete rozšíriť tak, aby sledovala nadchádzajúce stretnutia a nastavovala pripomienky. Môžete dokonca zaviesť spoluprácu s kalendármi iných používateľov, aby ste sa vyhli konfliktom pri plánovaní.

Všetko to začína základnou kostrou aplikácie GUI Calendar.

Moduly Calendar, Tkinter a DateTime

Na zostavenie GUI kalendára použijete Calendar, Tkinter a DateTime Module. The Modul kalendára prichádza s Pythonom a umožňuje vám vykonávať akcie súvisiace s dátumom, mesiacom a kalendárom.

Tkinter vám umožňuje vytvárať desktopové aplikácie. Ponúka množstvo miniaplikácií, užitočných knižníc, objektov plátna a analyzátorov HTML/XML/PDF. Ak chcete vytvoriť GUI aplikáciu, všetko, čo musíte urobiť, je:

instagram viewer
  1. Importujte knižnicu.
  2. Vytvorte okno.
  3. Pridajte do tohto okna widgety.
  4. Zavolajte hlavnú slučku udalostí na vykonanie akcií na základe interakcie používateľa.

Ak chcete nainštalovať Tkinter do svojho systému, otvorte terminál a spustite:

pip nainštalovať tkinter

Modul DateTime je ďalším vstavaným modulom. Ponúka niekoľko tried, ktoré si poradia s dátumami, časmi a časovými intervalmi. Pomocou tohto modulu môžete vytvoriť plánovač udalostí, budík, kalkulačku dátumu a aplikáciu časového pásma.

Ako vytvoriť GUI kalendár pomocou Pythonu

Zdrojový kód GUI kalendára pomocou Pythonu nájdete v tomto úložisko GitHub.

Začnite importovaním modulu Tkinter, Calendar a DateTime. Definujte funkciu, vytlačiť Kalendár. Použi dostať () metóda na Spinboxe (definovaná neskôr v kóde) na extrahovanie mesiaca a roku, ktorý si používateľ vybral. Odovzdajte tieto hodnoty do modulu kalendára, aby ste získali formátovaný textový kalendár predstavujúci zadaný rok a mesiac. Tento text predstavuje jednoduchú monopriestorovú mriežku s dňami usporiadanými do týždňov počínajúc pondelkom.

Vymažte všetky existujúce údaje z obrazovky. 1.0 označuje začiatok poľa a koniec označuje koniec poľa. Nakoniec vložte kalendár vygenerovaný skôr a zobrazte ho na obrazovke.

od tkinter importovať *
importovať kalendár
od Dátum Čas importovať dátum

defvytlačiť Kalendár():
mesiac = int (month_box.get())
rok = int (year_box.get())
output_calendar = calendar.month (rok, mesiac)
calendar_field.delete(1.0, 'koniec')
calendar_field.insert('koniec', výstupný_kalendár)

Definujte funkciu, resetovať. Vymažte obsah na obrazovke a nastavte mesiac a rok na súčasnosť a použite config() spôsob, ako ho zobraziť na obrazovke.

defresetovať():
calendar_field.delete(1.0, 'koniec')
month_var.set (aktuálny_mesiac)
year_var.set (aktuálny_rok)
month_box.config (textvariable=month_var)
year_box.config (textvariable=year_var)

Definujte funkciu, zatvorte, aby ste zničili zobrazenie okna, a ukončite program.

defZavrieť():
guiWindow.destroy()

Inicializujte inštanciu Tkinter a zobrazte koreňové okno. Nastavte nadpis, rozmery v pixeloch a zakážte jeho zmenu veľkosti ponechaním parametrov na 0.

ak __meno__ == "__Hlavná__":
guiWindow = Tk()
guiWindow.title("Kalendár GUI")
guiWindow.geometry('500 x 550')
guiWindow.sizeable(0, 0)

Definujte štyri rámčeky pre nadpis hlavičky, mesiac a rok, displej a tlačidlá. Plní funkciu kontajnera, ktorý riadi umiestňovanie ďalších widgetov. Usporiada rozloženie a poskytuje výplň pre tieto miniaplikácie pomocou obdĺžnikových častí na obrazovke.

Usporiadajte rámy do blokov pred ich umiestnením do guiwindow pomocou balenie() metóda. Nastavte hodnotu expand na true, aby ste povolili miniaplikácii meniť veľkosť a rozširovať sa v dostupnom priestore. Nastaviť vyplniť atribút obidva, aby sa miniaplikácii umožnilo rozbaliť tak, aby zaberalo celé okno v smere x a y.

 header_frame = Rám (guiWindow)
entry_frame = Rám (guiWindow)
result_frame = Rám (guiWindow)
button_frame = Rám (guiWindow)

header_frame.pack (expand=Pravda, vyplniť="obaja")
entry_frame.pack (expand=Pravda, vyplniť="obaja")
result_frame.pack (expand=Pravda, vyplniť="obaja")
button_frame.pack (expand=Pravda, vyplniť="obaja")

Zadajte tri menovky pre hlavičku, mesiac a rok. Nastavte rodičovské okno, do ktorého ho chcete umiestniť, text, ktorý bude zobrazovať, štýly písma spolu s farbou písma. Zabaľte a umiestnite štítky na vhodné miesto. Pridružený IntVar() s vstupný_rámec na nastavenie a príjem celočíselných údajov.

 header_label = Označenie (snímka hlavičky, text="KALENDÁR",
font=('arial', '45', 'bold'), fg="#A020F0")

header_label.pack (expand=Pravda, vyplniť="obaja")

month_label = Označenie (vstupný_rámec, text="Mesiac:",
font=("arial", "20", "tučné"), fg="#000000")

year_label = Označenie (vstupný_rámec, text="Rok:",
font=("arial", "20", "tučné"), fg="#000000")

month_label.place (x=30, y=0)
year_label.place (x=275, y=0)
month_var = IntVar (vstupný_rámec)
year_var = IntVar (vstupný_rámec)

Získajte aktuálny mesiac, rok a nastavte ho na premennú IntVar(). Pomocou miniaplikácie Spinbox špecifikujte používateľovi rozsah hodnôt. Nastavte rozsah hodnôt, ktoré bude Spinbox obsahovať, šírku, aktuálnu hodnotu, ktorú by mal obsahovať, a štýly písma. Umiestnite krabice vhodne.

 aktuálny_mesiac = dátum.dnes().mesiac
aktuálny_rok = dátum.dnes().rok
month_var.set (aktuálny_mesiac)
year_var.set (aktuálny_rok)

month_box = Spinbox (vstupný_rámec, from_=1, do =12, šírka="10",
textvariable=mesiac_var, font=('arial','15'))

year_box = Spinbox (vstupný_rámec, from_=0000, do =3000, šírka="10",
textvariable=year_var, font=('arial','15'))

month_box.place (x=130, y=5)
rok_box.miesto (x=360, y=5)

Deklarujte textové pole a nastavte jeho nadradené okno, šírku, výšku, štýl písma, štýl 3D animácie a šírku okraja. Usporiadajte textový widget a deklarujte tri tlačidlá na zobrazenie, resetovanie a zatvorenie okna. Tlačidlá obsahujú ďalšiu vlastnosť farba pozadia a vlastnosť príkazu.

Pomocou vlastnosti command môžete nastaviť funkciu, ktorú má vykonať po kliknutí. Umiestnite tlačidlá do jedného radu s dostatočným priestorom medzi každým z nich.

 calendar_field = Text (výsledkový_rámec, šírka=20, výška=8,
font=("kuriér", "18"), reliéf=RIDGE, borderwidth=2)

calendar_field.pack()

display_button = Tlačidlo (rámček_tlačidla, text="DISPLAY", bg="#A020F0",
fg="#E0FFFF", command=printCalendar, font=('arial', '15'))

reset_button = Tlačidlo (rámček_tlačidla, text="RESETOVAŤ", bg="#A020F0",
fg="#E0FFFF", command=reset, font=('arial','15'))

close_button = Tlačidlo (rámček_tlačidla, text="ZAVRIEŤ", 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)

The mainloop() funkcia hovorí Pythonu, aby spustil slučku udalostí Tkinter a počúval udalosti (ako sú stlačenia tlačidiel), kým nezatvoríte okno.

 guiWindow.mainloop()

Zložte celý kód, aby ste videli svoj kalendár GUI v akcii.

Vzorový výstup z GUI kalendára

Pri spustení programu nad programom sa zobrazí okno s aktuálnym mesiacom a dátumom. Po kliknutí na tlačidlo Reset sa zobrazí rovnaká obrazovka.

Po nastavení mesiaca na 3 a roku na 2000 program zobrazí kalendár na marec 2000. Po stlačení tlačidla Zavrieť program okno zničí a zastaví jeho vykonávanie.

Pustite sa do niektorých projektov s GUI pre začiatočníkov pomocou Pythonu

Vytváranie GUI aplikácií nebolo nikdy také jednoduchšie. Modul Tkinter v Pythone poskytuje mnoho užitočných widgetov, ktoré si môžete plne prispôsobiť s veľmi malým množstvom kódu. Spolu s tým získate prístup k manažérom rozloženia, ako je balenie, mriežka a umiestnenie prvkov podľa vášho želania.

Ak chcete začať, môžete si vytvoriť testovaciu hru na písanie, farebnú paletu, prevodník mien alebo kalkulačku. Vytváranie týchto aplikácií je zábavné a ľahko rozvinú vaše schopnosti objektovo orientovaného programovania.