Izdelava koledarja je odličen način za učenje o ustvarjanju aplikacij GUI s Pythonovim modulom Tkinter. To aplikacijo lahko uporabite za upravljanje in načrtovanje dogodkov vnaprej.
Če gremo še dlje, lahko razširite aplikacijo za sledenje prihajajočim sestankom in nastavljanje opomnikov. Lahko bi celo uvedli sodelovanje s koledarji drugih uporabnikov, da bi se izognili sporom pri načrtovanju.
Vse se začne z osnovnim okostjem aplikacije GUI Calendar.
Moduli Calendar, Tkinter in DateTime
Za izdelavo koledarja GUI boste uporabili koledar, Tkinter in modul DateTime. The Koledarski modul prihaja s Pythonom in vam omogoča izvajanje dejanj, povezanih z datumom, mesecem in koledarjem.
Tkinter omogoča ustvarjanje namiznih aplikacij. Ponuja različne pripomočke, uporabne knjižnice, predmete platna in razčlenjevalnike HTML/XML/PDF. Če želite zgraditi aplikacijo GUI, je vse, kar morate storiti:
- Uvozi knjižnico.
- Ustvarite okno.
- V to okno dodajte pripomočke.
- Pokličite glavno zanko dogodkov za izvajanje dejanj na podlagi interakcije uporabnika.
Če želite namestiti Tkinter v svoj sistem, odprite terminal in zaženite:
pip namestite tkinter
Modul DateTime je še en vgrajen. Ponuja več razredov, ki se lahko ukvarjajo z datumi, časi in časovnimi intervali. S tem modulom lahko sestavite razporejevalnik dogodkov, budilka, kalkulator datuma in aplikacija za časovni pas.
Kako zgraditi koledar GUI z uporabo Pythona
Tukaj lahko najdete izvorno kodo koledarja GUI z uporabo Pythona Repozitorij GitHub.
Začnite z uvozom modula Tkinter, Calendar in DateTime. Definirajte funkcijo, printCalendar. Uporabi dobiti () metodo v Spinboxu (definirano pozneje v kodi), da izvlečete mesec in leto, ki ju je izbral uporabnik. Te vrednosti posredujte koledarskemu modulu, da dobite koledar z oblikovanim besedilom, ki predstavlja navedeno leto in mesec. To besedilo predstavlja preprosto enoprostorno mrežo z dnevi, razvrščenimi po tednih, ki se začnejo s ponedeljkom.
Počistite vse obstoječe podatke z zaslona. 1.0 označuje začetek polja in konec označuje konec polja. Nazadnje vstavite prej ustvarjen koledar in ga prikažite na zaslonu.
od tkinter uvoz *
uvoz koledar
od Datum čas uvoz datum
defprintCalendar():
mesec = int (month_box.get())
leto = int (year_box.get())
output_calendar = calendar.month (leto, mesec)
calendar_field.delete(1.0, 'konec')
calendar_field.insert('konec', izhodni_koledar)
Definirajte funkcijo, ponastaviti. Izbrišite vsebino na zaslonu in nastavite mesec in leto na sedanjost ter uporabite config() način za prikaz na zaslonu.
defponastaviti():
calendar_field.delete(1.0, 'konec')
month_var.set (trenutni_mesec)
year_var.set (trenutno_leto)
month_box.config (textvariable=month_var)
year_box.config (textvariable=year_var)
Določite funkcijo, zaprite, da uničite okenski zaslon, in zapustite program.
defblizu():
guiWindow.destroy()
Inicializirajte primerek Tkinter in prikažite korensko okno. Nastavite naslov, dimenzije v slikovnih pikah in onemogočite njegovo spreminjanje velikosti tako, da ohranite parametre na 0.
če __ime__ == "__glavni__":
guiWindow = Tk()
guiWindow.title("Koledar GUI")
guiWindow.geometry('500 x 550')
guiWindow.resizable(0, 0)
Določite štiri okvirje za naslov glave, vnos meseca in leta, zaslon in gumbe. Opravlja funkcijo vsebnika, ki usmerja postavitev drugih pripomočkov. Ureja postavitev in zagotavlja oblazinjenje za te pripomočke z uporabo pravokotnih odsekov na zaslonu.
Organizirajte okvirje v bloke, preden jih postavite v guiwindow z uporabo paket() metoda. Nastavite vrednost razširitve na true, da omogočite gradniku spreminjanje velikosti in razširitev v razpoložljivem prostoru. Nastavite napolniti atribut obema, da omogočite, da se gradnik razširi tako, da zavzame celotno okno v smeri x in y.
header_frame = Okvir (guiWindow)
entry_frame = Okvir (guiWindow)
result_frame = Okvir (guiWindow)
button_frame = Okvir (guiWindow)
header_frame.pack (razširi=Prav, izpolni ="oboje")
vstopni_okvir.pack (razširi=Prav, izpolni ="oboje")
result_frame.pack (razširi=Prav, izpolni ="oboje")
button_frame.pack (razširi=Prav, izpolni ="oboje")
Določite tri oznake za glavo, mesec in leto. Nastavite nadrejeno okno, v katerega ga želite postaviti, besedilo, ki ga bo prikazalo, sloge pisave in barvo pisave. Zapakirajte in postavite nalepke na ustrezno mesto. Sodelavec IntVar() z vstopni_okvir za nastavitev in prejemanje celoštevilskih podatkov.
header_label = Oznaka (header_frame, text="KOLEDAR",
pisava=('arial', '45', 'krepko'), fg="#A020F0")header_label.pack (razširi=Prav, izpolni ="oboje")
month_label = Oznaka (vnosni_okvir, besedilo="Mesec:",
pisava=("arial", "20", "krepko"), fg="#000000")year_label = Oznaka (vnosni_okvir, besedilo="Leto:",
pisava=("arial", "20", "krepko"), fg="#000000")
mesec_oznaka.mesto (x=30, y=0)
letna_oznaka.mesto (x=275, y=0)
month_var = IntVar (vnosni_okvir)
year_var = IntVar (vnosni_okvir)
Pridobite trenutni mesec, leto in ga nastavite na spremenljivko IntVar(). Uporabite gradnik Spinbox, da uporabniku določite obseg vrednosti. Nastavite obseg vrednosti, ki jih bo Spinbox vseboval, širino, trenutno vrednost, ki naj jo vsebuje, in sloge pisave. Škatle ustrezno postavite.
trenutni_mesec = datum.danes().mesec
trenutno_leto = datum.danes().leto
month_var.set (trenutni_mesec)
year_var.set (trenutno_leto)month_box = Spinbox (vnosni_okvir, od_=1, do=12, širina="10",
textvariable=month_var, pisava=('arial','15'))year_box = Spinbox (vnosni_okvir, od_=0000, do=3000, širina="10",
textvariable=year_var, pisava=('arial','15'))
month_box.place (x=130, y=5)
year_box.place (x=360, y=5)
Označite besedilno polje in nastavite njegovo nadrejeno okno, širino, višino, slog pisave, slog 3D-animacije in širino obrobe. Organizirajte besedilni gradnik in označite tri gumbe za prikaz, ponastavitev in zapiranje okna. Gumbi vsebujejo dodatno lastnost barve ozadja in lastnost ukaza.
Z lastnostjo ukaza lahko nastavite funkcijo, ki naj se izvede po kliku. Gumbe postavite v eno vrsto z dovolj prostora med njimi.
calendar_field = Besedilo (okvir_rezultata, širina=20, višina=8,
pisava=("kurir", "18"), relief=RIDGE, borderwidth=2)calendar_field.pack()
display_button = Gumb (okvir_gumba, besedilo="DISPLAY", bg="#A020F0",
fg="#E0FFFF", command=printCalendar, font=('arial', '15'))reset_button = Gumb (okvir_gumba, besedilo="PONASTAVITI", bg="#A020F0",
fg="#E0FFFF", ukaz=ponastavi, pisava=('arial','15'))close_button = Gumb (okvir_gumba, besedilo="ZAPRI", bg="#A020F0",
fg="#E0FFFF", ukaz=zapri, pisava=('arial','15'))
display_button.place (x=55, y=0)
reset_button.place (x=210, y=0)
close_button.place (x=350, y=0)
The glavna zanka() funkcija pove Pythonu, naj zažene zanko dogodkov Tkinter in posluša dogodke (kot so pritiski gumbov), dokler ne zaprete okna.
guiWindow.mainloop()
Sestavite vso kodo in si oglejte svoj GUI koledar v akciji.
Vzorec izpisa koledarja GUI
Ob zagonu programa nad programom prikaže okno s trenutnim mesecem in datumom. Gumb Ponastavi ob kliku prikaže isti zaslon.
Ob nastavitvi meseca na 3 in leta na 2000 program prikaže koledar za marec 2000. S pritiskom na gumb Zapri program uniči okno in ustavi njegovo izvajanje.
Lotite se nekaj začetniških projektov GUI z uporabo Pythona
Gradnja aplikacij GUI še nikoli ni bila tako preprosta. Pythonov modul Tkinter nudi številne uporabne gradnike, ki jih lahko v celoti prilagodite z zelo malo kode. Skupaj s tem dobite dostop do upraviteljev postavitev, kot so pakiranje, mreža in mesto za pozicioniranje elementov po vaši želji.
Za začetek lahko sestavite igro za preizkus tipkanja, barvno paleto, pretvornik valut ali kalkulator. Te aplikacije je zabavno graditi in bodo z lahkoto razvile vaše sposobnosti objektno usmerjenega programiranja.