Разработка GUI в Python - Студенческий научный форум

XIV Международная студенческая научная конференция Студенческий научный форум - 2022

Разработка GUI в Python

Тараненко И.В. 1
1Институт технологий (филиал) ДГТУ в г. Волгодонске
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

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).

Просмотров работы: 10