Създаването на календар е чудесен начин да научите за създаването на GUI приложения с модула Tkinter на Python. Можете да използвате това приложение, за да управлявате и планирате събития предварително.
По-нататък можете да разширите приложението, за да проследявате предстоящи срещи и да задавате напомняния. Можете дори да въведете сътрудничество с календарите на други потребители, за да избегнете конфликти в графика.
Всичко започва с основния скелет на приложението GUI Calendar.
Модулите Calendar, Tkinter и DateTime
За да създадете GUI Calendar, ще използвате Calendar, Tkinter и DateTime Module. The Календарен модул идва с Python и ви позволява да изпълнявате действия, свързани с дата, месец и календар.
Tkinter ви позволява да създавате настолни приложения. Той предлага разнообразие от джаджи, полезни библиотеки, платно обекти и анализатори на HTML/XML/PDF. За да създадете GUI приложение, всичко, което трябва да направите, е:
- Импортирайте библиотеката.
- Създайте прозорец.
- Добавете джаджи към този прозорец.
- Извикайте основния цикъл на събитията, за да извършвате действия въз основа на взаимодействието на потребителя.
За да инсталирате Tkinter във вашата система, отворете терминал и стартирайте:
pip инсталирайте tkinter
Модулът DateTime е друг, който е вграден. Той предлага няколко класа, които могат да работят с дати, часове и интервали от време. С този модул можете да създадете планировчик на събития, Будилник, калкулатор за дата и приложение за часова зона.
Как да създадете GUI календар с помощта на Python
Можете да намерите изходния код на GUI календара с помощта на Python тук GitHub хранилище.
Започнете с импортиране на модула Tkinter, Calendar и DateTime. Дефинирайте функция, printCalendar. Използвай получи() метод на Spinbox (дефиниран по-късно в кода), за да извлечете месеца и годината, които потребителят е избрал. Предайте тези стойности на календарния модул, за да получите форматиран текстов календар, представящ определената година и месец. Този текст представлява проста монопространствена мрежа с дни, подредени в седмици, започващи от понеделник.
Изчистете всички съществуващи данни от екрана. 1.0 показва началото на полето и край показва края на полето. Накрая поставете генерирания по-рано календар и го покажете на екрана.
от tkinter импортиране *
импортиране календар
от Време за среща импортиране дата
дефprintCalendar():
месец = int (month_box.get())
година = int (year_box.get())
output_calendar = calendar.month (година, месец)
calendar_field.delete(1.0, 'край')
calendar_field.insert('край', изходен_календар)
Дефинирайте функция, нулиране. Изтрийте съдържанието на екрана и задайте месеца и годината към момента и използвайте config() метод за показване на екрана.
дефнулиране():
calendar_field.delete(1.0, 'край')
month_var.set (текущ_месец)
year_var.set (текуща_година)
month_box.config (textvariable=month_var)
year_box.config (textvariable=year_var)
Дефинирайте функция, затворете, за да унищожите дисплея на прозореца и излезте от програмата.
дефблизо():
guiWindow.destroy()
Инициализирайте екземпляра на Tkinter и покажете основния прозорец. Задайте заглавието, размерите в пиксели и деактивирайте преоразмеряването му, като запазите параметрите като 0.
ако __име__ == "__основен__":
guiWindow = Tk()
guiWindow.title("GUI календар")
guiWindow.geometry('500x550')
guiWindow.resizable(0, 0)
Определете четири рамки за заглавието на заглавието, записа на месеца и годината, дисплея и бутоните. Той изпълнява функцията на контейнер, ръководейки разположението на други уиджети. Той подрежда оформлението и осигурява подложка за тези джаджи, използвайки правоъгълни секции на екрана.
Организирайте рамките в блокове, преди да ги поставите в guiwindow, като използвате пакет() метод. Задайте стойността на expand на true, за да позволите на приспособлението да преоразмерява и разширява наличното си пространство. Нагласи запълвам атрибут и на двете, за да позволи на приспособлението да се разшири, за да заеме целия прозорец в посока x и y.
header_frame = Рамка (guiWindow)
entry_frame = Рамка (guiWindow)
result_frame = Рамка (guiWindow)
button_frame = Рамка (guiWindow)
header_frame.pack (разширяване=Вярно, попълване="и двете")
entry_frame.pack (разширяване=Вярно, попълване="и двете")
result_frame.pack (разширяване=Вярно, попълване="и двете")
button_frame.pack (разширяване=Вярно, попълване="и двете")
Посочете три етикета за заглавката, месеца и годината. Задайте родителския прозорец, в който искате да го поставите, текста, който ще показва, стиловете на шрифта заедно с цвета на шрифта. Опаковайте и поставете етикетите на подходящо място. Сътрудник IntVar() с входна_рамка за задаване и получаване на целочислени данни.
header_label = Етикет (заглавна_рамка, текст="КАЛЕНДАР",
шрифт=("arial", '45', "удебелен"), fg="#A020F0")header_label.pack (разширяване=Вярно, попълване="и двете")
month_label = Етикет (вписна_рамка, текст="Месец:",
шрифт=("ариал", "20", "удебелен"), fg="#000000")year_label = Етикет (вписна_рамка, текст="Година:",
шрифт=("ариал", "20", "удебелен"), fg="#000000")
month_label.place (x=30, y=0)
year_label.place (x=275, y=0)
month_var = IntVar (entry_frame)
year_var = IntVar (entry_frame)
Вземете текущия месец, година и го задайте на променливата IntVar(). Използвайте изпълнимия модул Spinbox, за да посочите диапазон от стойности за потребителя. Задайте диапазона от стойности, които Spinbox ще съдържа, ширината, текущата стойност, която трябва да съдържа, и стиловете на шрифта. Поставете кутиите по подходящ начин.
текущ_месец = дата.днес().месец
текуща_година = дата.днес().година
month_var.set (текущ_месец)
year_var.set (текуща_година)month_box = Spinbox (входна_рамка, от_=1, до=12, ширина="10",
textvariable=month_var, шрифт=("arial",'15'))year_box = Spinbox (входна_рамка, от_=0000, до=3000, ширина="10",
textvariable=year_var, шрифт=("arial",'15'))
month_box.place (x=130, y=5)
year_box.place (x=360, y=5)
Декларирайте текстово поле и задайте неговия родителски прозорец, ширина, височина, стил на шрифта, стил на 3D анимация и ширина на границата. Организирайте текстовия модул и декларирайте три бутона за показване, нулиране и затваряне на прозореца. Бутоните съдържат допълнително свойство цвят на фона и свойство команда.
Използвайки свойството на командата, можете да зададете функцията, която тя трябва да изпълни след щракване. Поставете бутоните в един ред с достатъчно разстояние между всеки от тях.
calendar_field = Текст (резултатна_рамка, ширина=20, височина=8,
шрифт=("куриер", "18"), relief=RIDGE, borderwidth=2)calendar_field.pack()
display_button = Бутон (button_frame, text=„ДИСПЛЕЙ“, bg="#A020F0",
fg="#E0FFFF", команда=printCalendar, шрифт=("arial", '15'))reset_button = Бутон (button_frame, text="НУЛИРАНЕ", bg="#A020F0",
fg="#E0FFFF", команда=нулиране, шрифт=("arial",'15'))close_button = Бутон (button_frame, text="БЛИЗО", bg="#A020F0",
fg="#E0FFFF", команда=затваряне, шрифт=("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() функцията казва на Python да стартира цикъла на събитията на Tkinter и да слуша за събития (като натискания на бутони), докато затворите прозореца.
guiWindow.mainloop()
Съберете целия код, за да видите вашия GUI календар в действие.
Примерен резултат от GUI календара
При стартиране на програмата над програмата показва прозорец с текущия месец и дата. Бутонът за нулиране показва същия екран при щракване.
При задаване на месец 3 и година на 2000, програмата показва календара за март 2000 г. При натискане на бутона Затвори програмата унищожава прозореца и спира изпълнението му.
Заемете се с някои GUI проекти за начинаещи с помощта на Python
Създаването на GUI приложения никога не е било толкова лесно. Модулът Tkinter на Python предоставя много полезни джаджи, които можете да персонализирате напълно с много малко код. Заедно с това получавате достъп до мениджъри на оформление, като пакетиране, решетка и място за позициониране на елементи според вашето желание.
Можете да създадете тестова игра за писане, цветова палитра, валутен конвертор или калкулатор, за да започнете. Тези приложения са забавни за създаване и с лекота ще развият вашите умения за обектно-ориентирано програмиране.