Tworzenie kalendarza to świetny sposób na poznanie tworzenia aplikacji GUI za pomocą modułu Tkinter języka Python. Możesz użyć tej aplikacji do zarządzania wydarzeniami i planowania ich z wyprzedzeniem.
Idąc dalej, możesz rozszerzyć aplikację, aby śledzić nadchodzące spotkania i ustawiać przypomnienia. Możesz nawet wprowadzić współpracę z kalendarzami innych użytkowników, aby uniknąć konfliktów w harmonogramie.
Wszystko zaczyna się od podstawowego szkieletu aplikacji kalendarza GUI.
Moduły Calendar, Tkinter i DateTime
Aby zbudować kalendarz GUI, użyjesz Calendar, Tkintera i modułu DateTime. The Moduł kalendarza jest dostarczany z Pythonem i umożliwia wykonywanie działań związanych z datą, miesiącem i kalendarzem.
Tkinter umożliwia tworzenie aplikacji desktopowych. Oferuje różnorodne widżety, pomocne biblioteki, obiekty płótna i parsery HTML/XML/PDF. Aby zbudować aplikację GUI, wystarczy:
- Zaimportuj bibliotekę.
- Utwórz okno.
- Dodaj widżety do tego okna.
- Wywołaj główną pętlę zdarzeń, aby wykonać działania na podstawie interakcji użytkownika.
Aby zainstalować Tkintera w swoim systemie, otwórz terminal i uruchom:
pip zainstaluj tkintera
Moduł DateTime to kolejny wbudowany moduł. Oferuje kilka klas, które mogą zajmować się datami, godzinami i przedziałami czasowymi. Za pomocą tego modułu możesz zbudować harmonogram wydarzeń, budzik, kalkulator daty i aplikacja strefy czasowej.
Jak zbudować kalendarz GUI za pomocą Pythona
Możesz znaleźć kod źródłowy kalendarza GUI przy użyciu Pythona w tym Repozytorium GitHub.
Rozpocznij od zaimportowania modułów Tkinter, Calendar i DateTime. Zdefiniuj funkcję, drukujKalendarz. Użyj Dostawać() metoda na Spinboksie (zdefiniowana później w kodzie), aby wyodrębnić miesiąc i rok wybrany przez użytkownika. Przekaż te wartości do modułu kalendarza, aby uzyskać sformatowany kalendarz tekstowy reprezentujący określony rok i miesiąc. Ten tekst reprezentuje prostą siatkę jednoprzestrzenną, z dniami ułożonymi w tygodnie, począwszy od poniedziałku.
Usuń wszelkie istniejące dane z ekranu. 1.0 wskazuje początek pola i koniec wskazuje koniec pola. Na koniec wstaw wygenerowany wcześniej kalendarz i wyświetl go na ekranie.
z tkinter import *
import kalendarz
z datagodzina import data
pokdrukujKalendarz():
miesiąc = int (miesiąc_pole.get())
rok = int (pudełko_roku.get())
kalendarz_wyjściowy = kalendarz.miesiąc (rok, miesiąc)
Calendar_field.delete(1.0, 'koniec')
pole_kalendarza.wstaw('koniec', kalendarz_wyjściowy)
Zdefiniuj funkcję, Resetowanie. Usuń zawartość ekranu i ustaw miesiąc i rok na teraźniejszość i użyj konfiguracja() sposób wyświetlania go na ekranie.
pokResetowanie():
Calendar_field.delete(1.0, 'koniec')
zestaw_zmiennej_miesiąca (bieżący_miesiąc)
zmienna_roku.zestaw (bieżący_rok)
Month_box.config (zmienna tekstowa=miesiąc_zmienna)
year_box.config (textvariable=year_var)
Zdefiniuj funkcję, zamknij, aby zniszczyć wyświetlanie w oknie i zamknij program.
pokzamknąć():
guiWindow.destroy()
Zainicjuj instancję Tkinter i wyświetl okno główne. Ustaw tytuł, wymiary w pikselach i wyłącz zmianę rozmiaru, utrzymując parametry na 0.
Jeśli __nazwa__ == "__główny__":
guiWindow = Tk()
guiWindow.title(„Kalendarz GUI”)
guiWindow.geometry(„500x550”)
guiWindow.resizable(0, 0)
Zdefiniuj cztery ramki dla tytułu nagłówka, wpisu miesiąca i roku, wyświetlacza i przycisków. Pełni funkcję kontenera, kierując rozmieszczeniem innych widżetów. Organizuje układ i zapewnia dopełnienie tych widżetów za pomocą prostokątnych sekcji na ekranie.
Uporządkuj ramki w bloki przed umieszczeniem ich w oknie gui za pomocą Pakiet() metoda. Ustaw wartość expand na true, aby umożliwić widżetowi zmianę rozmiaru i rozwinięcie dostępnego miejsca. Ustaw wypełnić atrybut obu, aby umożliwić widżetowi rozwinięcie się i zajęcie całego okna w kierunku x i y.
header_frame = Ramka (guiWindow)
Entry_frame = Ramka (guiWindow)
result_frame = Ramka (guiWindow)
button_frame = Ramka (guiWindow)
header_frame.pack (rozwiń=PRAWDA, wypełnij="Zarówno")
entry_frame.pack (rozwiń=PRAWDA, wypełnij="Zarówno")
wynik_ramka.pack (rozwiń=PRAWDA, wypełnij="Zarówno")
button_frame.pack (rozwiń=PRAWDA, wypełnij="Zarówno")
Określ trzy etykiety dla nagłówka, miesiąca i roku. Ustaw okno nadrzędne, w którym chcesz je umieścić, tekst, który będzie wyświetlany, style czcionek wraz z kolorem czcionki. Zapakuj i umieść etykiety w odpowiednim miejscu. Współpracownik IntVar() z ramka_wejściowa ustawiać i odbierać dane całkowite.
nagłówek_etykieta = Etykieta (ramka_nagłówka, tekst="KALENDARZ",
czcionka=(„arialny”, '45', 'pogrubiony'), fg="#A020F0")header_label.pack (rozwiń=PRAWDA, wypełnij="Zarówno")
etykieta_miesiąca = Etykieta (ramka_wpisu, tekst="Miesiąc:",
czcionka=(„arialny”, "20", "pogrubiony"), fg="#000000")etykieta_roku = Etykieta (ramka_wpisu, tekst="Rok:",
czcionka=(„arialny”, "20", "pogrubiony"), fg="#000000")
miesiac_etykieta.miejsce (x=30, y=0)
rok_etykieta.miejsce (x=275, y=0)
miesiac_zmienna = Zmienna miesieczna (ramka_wpisu)
zmienna_roku = Zmienna_międzyczasowa (ramka_wpisu)
Pobierz bieżący miesiąc, rok i ustaw go na zmienną IntVar(). Użyj widżetu Spinbox, aby określić zakres wartości dla użytkownika. Ustaw zakres wartości, które będzie zawierał Spinbox, szerokość, bieżącą wartość, którą powinien zawierać, oraz style czcionek. Ustaw odpowiednio pudełka.
bieżący_miesiąc = data.dzisiaj().miesiąc
bieżący_rok = data.dzisiaj().rok
zestaw_zmiennej_miesiąca (bieżący_miesiąc)
zmienna_roku.zestaw (bieżący_rok)miesiac_box = Spinbox (ramka_wpisu, from_=1, do=12, szerokość="10",
textvariable=miesiąc_zmienna, czcionka=(„arialny”,'15'))year_box = Spinbox (ramka_wejściowa, from_=0000, do=3000, szerokość="10",
zmienna tekstowa=zmienna_roku, czcionka=(„arialny”,'15'))
miesiac_box.miejsce (x=130, y=5)
rok_pole.miejsce (x=360, y=5)
Zadeklaruj pole tekstowe i ustaw jego okno nadrzędne, szerokość, wysokość, styl czcionki, styl animacji 3D i szerokość obramowania. Uporządkuj widżet tekstowy i zadeklaruj trzy przyciski do wyświetlania, resetowania i zamykania okna. Przyciski zawierają dodatkową właściwość background-color i właściwość command.
Korzystając z właściwości command, możesz ustawić funkcję, którą ma wykonać po kliknięciu. Umieść guziki w jednym rzędzie z dużą przestrzenią między nimi.
pole_kalendarza = Tekst (ramka_wyniku, szerokość=20, wysokość=8,
czcionka=("kurier", "18"), relief=GRZEB, szerokość obramowania=2)pole_kalendarza.pack()
display_button = Przycisk (ramka_przycisku, tekst="WYŚWIETLACZ", bg="#A020F0",
fg="#E0FFFF", command=drukujKalendarz, czcionka=(„arialny”, '15'))reset_button = Przycisk (ramka_przycisku, tekst="RESETOWANIE", bg="#A020F0",
fg="#E0FFFF", polecenie=resetuj, czcionka=(„arialny”,'15'))close_button = Przycisk (ramka_przycisku, tekst="ZAMKNĄĆ", bg="#A020F0",
fg="#E0FFFF", polecenie=zamknij, czcionka=(„arialny”,'15'))
display_button.place (x=55, y=0)
przycisk_resetowania.miejsce (x=210, y=0)
zamknij_przycisk.miejsce (x=350, y=0)
The główna pętla() mówi Pythonowi, aby uruchomił pętlę zdarzeń Tkinter i nasłuchiwał zdarzeń (takich jak naciśnięcia przycisków), dopóki nie zamkniesz okna.
guiWindow.mainloop()
Połącz cały kod, aby zobaczyć kalendarz GUI w akcji.
Przykładowe dane wyjściowe kalendarza GUI
Po uruchomieniu programu powyżej program wyświetla okno z bieżącym miesiącem i datą. Przycisk Reset wyświetla ten sam ekran po kliknięciu.
Po ustawieniu miesiąca na 3 i roku na 2000 program wyświetla kalendarz na marzec 2000. Po naciśnięciu przycisku Zamknij program niszczy okno i zatrzymuje jego wykonywanie.
Weź udział w kilku projektach GUI dla początkujących, korzystając z języka Python
Tworzenie aplikacji GUI nigdy nie było tak proste. Moduł Pythona Tkinter zapewnia wiele pomocnych widżetów, które można w pełni dostosować przy użyciu bardzo niewielkiej ilości kodu. Wraz z tym uzyskasz dostęp do menedżerów układu, takich jak pakiet, siatka i miejsce do pozycjonowania elementów zgodnie z Twoimi potrzebami.
Aby rozpocząć, możesz zbudować grę testową, paletę kolorów, przelicznik walut lub kalkulator. Te aplikacje są zabawne w tworzeniu i z łatwością rozwiną Twoje umiejętności programowania obiektowego.