Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Создание календаря — отличный способ научиться создавать приложения с графическим интерфейсом с помощью модуля Python Tkinter. Вы можете использовать это приложение для управления и планирования событий заранее.

Продвигаясь дальше, вы можете расширить приложение, чтобы отслеживать предстоящие встречи и устанавливать напоминания. Вы даже можете ввести совместную работу с календарями других пользователей, чтобы избежать конфликтов в расписании.

Все начинается с базового скелета приложения календаря с графическим интерфейсом.

Модули Calendar, Tkinter и DateTime

Чтобы создать календарь с графическим интерфейсом, вы будете использовать календарь, Tkinter и модуль DateTime. Модуль календаря поставляется с Python и позволяет выполнять действия, связанные с датой, месяцем и календарем.

Tkinter позволяет создавать настольные приложения. Он предлагает множество виджетов, полезных библиотек, объектов холста и парсеров HTML/XML/PDF. Чтобы создать приложение с графическим интерфейсом, все, что вам нужно сделать, это:

instagram viewer

  1. Импортируйте библиотеку.
  2. Создайте окно.
  3. Добавьте виджеты в это окно.
  4. Вызов основного цикла событий для выполнения действий на основе взаимодействия с пользователем.

Чтобы установить Tkinter в вашу систему, откройте терминал и выполните:

пип установить ткинтер

Модуль DateTime — еще один встроенный модуль. Он предлагает несколько классов, которые могут работать с датами, временем и временными интервалами. С помощью этого модуля вы можете создать планировщик событий, будильник, калькулятор даты и приложение часового пояса.

Как создать календарь с графическим интерфейсом с помощью Python

Вы можете найти исходный код календаря GUI с использованием Python в этом Репозиторий GitHub.

Начните с импорта модулей Tkinter, Calendar и DateTime. Определите функцию, печатьКалендарь. Использовать получать() метод в Spinbox (определенный позже в коде), чтобы извлечь месяц и год, выбранные пользователем. Передайте эти значения в модуль календаря, чтобы получить форматированный текстовый календарь, представляющий указанный год и месяц. Этот текст представляет собой простую моноширинную сетку, в которой дни расположены по неделям, начиная с понедельника.

Удалите все существующие данные с экрана. 1.0 указывает на начало поля, а конец указывает на конец поля. Наконец, вставьте сгенерированный ранее календарь и отобразите его на экране.

от ткинтер Импортировать *
Импортировать календарь
от дата и время Импортировать дата

дефпечатьКалендарь():
месяц = ​​целое число (month_box.get())
год = целое (year_box.get())
output_calendar = календарь.месяц (год, месяц)
calendar_field.delete(1.0, 'конец')
calendar_field.insert('конец', выходной_календарь)

Определите функцию, перезагрузить. Удалите содержимое на экране, установите месяц и год в настоящее время и используйте конфиг() способ отображения его на экране.

дефперезагрузить():
calendar_field.delete(1.0, 'конец')
month_var.set (текущий_месяц)
year_var.set (текущий_год)
month_box.config (текстовая переменная=month_var)
year_box.config (текстовая переменная=year_var)

Определите функцию, чтобы закрыть окно, и выйдите из программы.

дефзакрывать():
guiWindow.destroy()

Инициализируйте экземпляр Tkinter и отобразите корневое окно. Установите заголовок, размеры в пикселях и отключите изменение размера, оставив параметры равными 0.

если __имя__ == "__основной__":
guiWindow = Tk()
guiWindow.title(«Графический календарь»)
guiWindow.геометрия("500x550")
guiWindow.изменяемый размер(0, 0)

Определите четыре рамки для заголовка заголовка, ввода месяца и года, дисплея и кнопок. Он выполняет функцию контейнера, направляя размещение других виджетов. Он упорядочивает макет и обеспечивает отступы для этих виджетов с помощью прямоугольных секций на экране.

Организуйте кадры в блоки, прежде чем размещать их в guiwindow, используя пакет() метод. Установите значение расширения в 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 (развернуть =Истинный, заполнить ="оба")

Укажите три метки для заголовка, месяца и года. Установите родительское окно, в которое вы хотите его поместить, текст, который он будет отображать, стили шрифта и цвет шрифта. Упакуйте и разместите этикетки в соответствующем месте. Ассоциированный ЦелаяПеременная() с entry_frame для установки и получения целочисленных данных.

 header_label = Метка (header_frame, text="КАЛЕНДАРЬ",
шрифт=('ариал', '45', 'смелый'), фг="#A020F0")

header_label.pack (развернуть =Истинный, заполнить ="оба")

month_label = Метка (entry_frame, text="Месяц:",
шрифт=("ариал", "20", "смелый"), фг="#000000")

year_label = Метка (entry_frame, text="Год:",
шрифт=("ариал", "20", "смелый"), фг="#000000")

month_label.place (x=30, у =0)
year_label.place (x=275, у =0)
month_var = IntVar (entry_frame)
year_var = IntVar (entry_frame)

Получите текущий месяц, год и установите его в переменную IntVar(). Используйте виджет Spinbox, чтобы указать диапазон значений для пользователя. Установите диапазон значений, которые будут содержаться в Spinbox, ширину, текущее значение, которое оно должно содержать, и стили шрифта. Правильно расположите ящики.

 текущий_месяц = ​​дата.сегодня().месяц
текущий_год = дата.сегодня().год
month_var.set (текущий_месяц)
year_var.set (текущий_год)

month_box = Spinbox (entry_frame, from_=1, чтобы =12, ширина ="10",
textvariable=month_var, font=('ариал','15'))

year_box = Spinbox (entry_frame, from_=0000, чтобы =3000, ширина ="10",
textvariable=year_var, font=('ариал','15'))

месяц_ящик.место (х=130, у =5)
year_box.place (x=360, у =5)

Объявите текстовое поле и установите его родительское окно, ширину, высоту, стиль шрифта, стиль 3D-анимации и ширину границы. Организуйте текстовый виджет и объявите три кнопки для отображения, сброса и закрытия окна. Кнопки содержат дополнительное свойство background-color и свойство command.

Используя свойство команды, вы можете установить функцию, которую она должна выполнять после нажатия. Поместите кнопки в один ряд с достаточным пространством между каждой из них.

 calendar_field = Текст (result_frame, ширина =20, высота =8,
шрифт=("курьер", "18"), рельеф=КОНЪЕКТ, ширина границы=2)

calendar_field.pack()

display_button = Кнопка (button_frame, text="ОТОБРАЖАТЬ", бг="#A020F0",
фг="#E0FFFF", команда = printCalendar, шрифт = ('ариал', '15'))

reset_button = Кнопка (button_frame, text="ПЕРЕЗАГРУЗИТЬ", бг="#A020F0",
фг="#E0FFFF", команда = сброс, шрифт = ('ариал','15'))

close_button = Кнопка (button_frame, text="ЗАКРЫВАТЬ", бг="#A020F0",
фг="#E0FFFF", команда=закрыть, шрифт=('ариал','15'))

display_button.place (x=55, у =0)
reset_button.place (x=210, у =0)
close_button.place (x=350, у =0)

основной цикл () Функция сообщает Python запустить цикл событий Tkinter и прослушивать события (например, нажатия кнопок), пока вы не закроете окно.

 guiWindow.mainloop()

Соберите весь код вместе, чтобы увидеть свой календарь с графическим интерфейсом в действии.

Пример вывода календаря GUI

При запуске программы выше программа отображает окно с текущим месяцем и числом. При нажатии на кнопку «Сброс» отображается тот же экран.

При установке месяца на 3 и года на 2000 программа отображает календарь на март 2000 года. При нажатии на кнопку Close программа уничтожает окно и останавливает его выполнение.

Возьмите на себя некоторые проекты GUI для начинающих с использованием Python

Создание приложений с графическим интерфейсом еще никогда не было таким простым. Модуль Python Tkinter предоставляет множество полезных виджетов, которые можно полностью настроить с помощью очень небольшого кода. Наряду с этим вы получаете доступ к менеджерам компоновки, таким как упаковка, сетка и место, чтобы размещать элементы по своему желанию.

Для начала вы можете создать тестовую игру, цветовую палитру, конвертер валют или калькулятор. Эти приложения интересно создавать, и они с легкостью разовьют ваши навыки объектно-ориентированного программирования.