Введение
Python — это активно развивающийся скриптовый язык, который используют для решения большого объема самых разноплановых проблем и задач. Python пригодится в создании компьютерных и мобильных приложений, его применяют в работе с большим объемом информации, при разработке web-сайтов и других разнообразных проектов, используют в машинном обучении. Данный язык программирования используют крупные известные корпорации, такие как Spotify и Амазон (например, для анализа данных и создания алгоритма рекомендаций), YouTube, Инстаграм и даже Walt Disney. Таким образом, Python нашел свое место в различных областях — с его помощью можно решить множество задач разной сложности.
GUI (графический интерфейс пользователя) — это форма интерфейса, которая позволяет пользователю взаимодействовать с электронным устройством с помощью графических иконок и аудио-индикаторов вместо текстовых интерфейсов.
GUI-фреймворки легко доступны — они бесплатны и имеют открытый исходный код. В Python есть широкий спектр вариантов: от кроссплатформенных до заточенных под конкретную платформу.
Рис. 1 – Tkinter
Tkinter — связка Python с набором GUI-инструментов Tk. Это стандартный интерфейс-Python. Он доступен на Linux, Windows и macOS с установленными Python. Имя Tkinter происходит от Tk interface.
Основная часть
Создание меню:
Вначале, как обычно, создадим объект – основное окно приложения
Для добавления панели меню, используется класс Menu. Его нужно подключить из Tkinter.
Нужно создать объект меню в нашем окне и конфигурируем объект окна, добавляя в него меню:
Меню может содержать много элементов, причем эти элементы сами могут представлять меню и содержать другие элементы (подменю). В зависимости от того, какой тип элементов нужно добавить в меню, будет отличаться метод их добавления:
add_cascade(options): добавляет элемент меню, который в свою очередь может представлять подменю
add_command(options): добавляет элемент меню через параметр options. Ему можно назначить исполнение функции.
Кодпрограммы:
fromtkinterimport *
fromtkinterimportMenu
window = Tk()
window.geometry('400x400') #установка размера окна
window.title("Графический интерфейс")
mainmenu = Menu(window)
filemenu = Menu(mainmenu)
window.config(menu=mainmenu)
window.mainloop()
Результат показан на рисунке 2.
Рисунок 2 – Окно программы
Допустим, мы хотим создать стандартное меню из пунктов Файл, Справка, Автор.
Пункт Файл будет содержать подменю с элементами:
Открыть
Создать
Удалить
Следовательно, его мы должны создать методом, который добавляет элемент, представляющий подменю add_cascade(). Метод определен для экземпляра класса Menu, у нас это главное меню mainmenu:
Кодпрограммы:
fromtkinterimport *
fromtkinterimportMenu
window = Tk()
window.geometry('400x400') #установка размера окна
window.title("Графический интерфейс")
mainmenu = Menu(window)
filemenu = Menu(mainmenu)
window.config(menu=mainmenu)
mainmenu = Menu(window)
filemenu = Menu(mainmenu)
window.config(menu=mainmenu)
filemenu.add_command(label="Открыть", command=Open_file)
filemenu.add_command(label="Сохранить", command=SaveDialog)
filemenu.add_command(label="Сохранитькак...", command=Open_file)
mainmenu.add_command(label="Справка",command=Spravka)
mainmenu.add_command(label="Автор",command=Avtor)
window.mainloop()
Результат работы кода показан на рисунке 3.
Рисунок 3 – Создание подменю
Теперь подпункты существуют, но если на них нажать, ничего не происходит – т.к. нет никаких команд обработки для эти пунктов. Объекту, созданному с помощью add_command() можно назначить исполнение функции. Добавим такую функцию для подпункта Открыть:
Код программы:
from tkinter import *
fromtkinterimportMenu
fromtkinterimportmessagebox
fromtkinterimportfiledialog
window = Tk()
window.geometry('400x400') #установка размера окна
window.title("Графический интерфейс")
mainmenu = Menu(window)
filemenu = Menu(mainmenu)
window.config(menu=mainmenu)
def Open_file():
file_path = filedialog.askopenfilename()
file = open(file_path,'r')
content = file.read()
file.close()
filemenu.add_command(label="Открыть", command=Open_file)
filemenu.add_command(label="Сохранить", command=Open_file)
filemenu.add_command(label="Сохранитькак...", command=Open_file)
mainmenu.add_cascade(label="Файл", menu=filemenu)
mainmenu.add_command(label="Справка")
mainmenu.add_command(label="Автор")
messagebox.showinfo('Заголовок', 'Текст')
window.mainloop()
Результат показан на рисунке 4.
Рисунок 4 – Результат кнопки «Открыть»
Теперь пункт подменю «Открыть» активен, и срабатывает открытие файлов.
Добавление всплывающих окон
Для пунктов меню «Автор» и «Справка» воспользуемся всплывающими окнами.
Всплывающие окна в Tkinter реализованы с помощью класса messagebox, который сначала нужно импортировать:
Создать функцию, которая вызывает всплывающее окно при клике на «Справку». Окно сообщения должно кратко описывать программу.
Кодпрограммы:
fromtkinterimport *
fromtkinterimportMenu
fromtkinterimportmessagebox
fromtkinterimportfiledialog
window = Tk()
window.geometry('400x400') #установка размера окна
window.title("Графический интерфейс")
mainmenu = Menu(window)
filemenu = Menu(mainmenu)
window.config(menu=mainmenu)
def Open_file():
file_path = filedialog.askopenfilename()
file = open(file_path,'r')
content = file.read()
file.close()
filemenu.add_command(label="Открыть", command=Open_file)
filemenu.add_command(label="Сохранить", command=Open_file)
filemenu.add_command(label="Сохранитькак...", command=Open_file)
mainmenu.add_cascade(label="Файл", menu=filemenu)
def Spravka():
messagebox.showwarning('Информация о созданной программе', 'Программа Тараненко И.В.')
mainmenu.add_command(label="Справка",command=Spravka)
mainmenu.add_command(label="Автор")
messagebox.showinfo('Заголовок', 'Текст')
window.mainloop()
Результат работы кода представлен на рисунке 5.
Рисунок 5 – Информация о созданной программе
Для того, чтобы сделать всплывающее окно, нужно написать соответствующую функцию вывода такого messagebox и назначить ее на нужный пункт меню (Справка и Автор).
Создать функцию, которая вызывает всплывающее окно при клике на пункт Автор. Окно сообщения должно содержать данные об авторе (ФИО, группа, дата).
Кодпрограммы:
fromtkinterimport *
fromtkinterimportMenu
fromtkinterimportmessagebox
fromtkinterimportfiledialog
window = Tk()
window.geometry('400x400') #установка размера окна
window.title("Графический интерфейс")
mainmenu = Menu(window)
filemenu = Menu(mainmenu)
window.config(menu=mainmenu)
def Open_file():
file_path = filedialog.askopenfilename()
file = open(file_path,'r')
content = file.read()
file.close()
filemenu.add_command(label="Открыть", command=Open_file)
filemenu.add_command(label="Сохранить", command=Open_file)
filemenu.add_command(label="Сохранитькак...", command=Open_file)
mainmenu.add_cascade(label="Файл", menu=filemenu)
def Spravka():
messagebox.showwarning('Информация о созданной программе', 'Программа Тараненко И.В.')
def Avtor():
messagebox.showwarning('Информация о созданной программе', 'Автор Тараненко И.В. ИС41В)
mainmenu.add_command(label="Справка",command=Spravka)
mainmenu.add_command(label="Автор",command=Avtor)
messagebox.showinfo('Заголовок', 'Текст')
window.mainloop()
Результат работы представлен на рисунке 6.
Рисунок 6 – Автор программы
В созданное выше приложение можно добавить функции для пунктов «Сохранить» и «Сохранить как».
Кодпрограммы:
fromtkinterimport *
fromtkinterimportMenu
fromtkinterimportmessagebox
fromtkinterimportfiledialog
window = Tk()
window.geometry('400x400') #установка размера окна
window.title("Графический интерфейс")
mainmenu = Menu(window)
filemenu = Menu(mainmenu)
window.config(menu=mainmenu)
def Open_file():
file_path = filedialog.askopenfilename()
file = open(file_path,'r')
content = file.read()
file.close()
def SaveDialog():
file_path = filedialog.asksaveasfilename()
file = open(file_path,'r')
content = file.read()
file.close()
filemenu.add_command(label="Открыть", command=Open_file)
filemenu.add_command(label="Сохранить", command=SaveDialog)
filemenu.add_command(label="Сохранитькак...", command=Open_file)
mainmenu.add_cascade(label="Файл", menu=filemenu)
def Spravka():
messagebox.showwarning('Информация о созданной программе', 'Программа Тараненко И.В.’)
def Avtor():
messagebox.showwarning('Информация о созданной программе', 'Автор Тараненко И.В. ИС41В')
mainmenu.add_command(label="Справка",command=Spravka)
mainmenu.add_command(label="Автор",command=Avtor)
messagebox.showinfo('Заголовок', 'Текст')
window.mainloop()
Результат работы программы показан на рисунке 7.
Рисунок 7 – Результат кнопки «Сохранить»
ЗАКЛЮЧЕНИЕ
В проделанной работе мы разобрали как создается GUI в Python. В процессе был разработан графический интерфейс с помощью библиотеки Tkinter.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
Материал из Википедии — свободной энциклопедии.
Высокоуровневый язык программирования // Википедия. 2020.
URL: https://ru.wikipedia.org/wiki/python
(дата обращения: 23.11.2021).
Маккинли Уэс Python и анализ данных / Маккинли Уэс. — Саратов : Профобразование, 2019. — 482 c. (дата обращения: 27.11.2021).
Рик Гаско Простой Python просто с нуля / Рик Гаско. — Москва : СОЛОН-Пресс, 2019. — 256 c. (дата обращения: 27.11.2021).
Дроботун Н.В. Алгоритмизация и программирование. Язык Python : учебное пособие / Дроботун Н.В., Рудков Е.О., Баев Н.А.. — Санкт-Петербург : Санкт-Петербургский государственный университет промышленных технологий и дизайна, 2020. — 119 c. (дата обращения: 27.11.2021).
Шелудько В.М. Основы программирования на языке высокого уровня Python : учебное пособие / Шелудько В.М.. — Ростов-на-Дону, Таганрог : Издательство Южного федерального университета, 2017. — 146 c. (дата обращения: 27.11.2021).