Введение в Tkinter. Разработка графических интерфейсов в Python
Покупка
Новинка
Тематика:
Программирование и алгоритмизация
Год издания: 2023
Кол-во страниц: 100
Дополнительно
Вид издания:
Учебно-методическая литература
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7882-3340-6
Артикул: 844137.01.99
Рассмотрены примеры создания приложений с графическим интерфейсом с помощью библиотеки Tkinter. Приведены необходимые сведения по стандарт-ным графическим компонентам, описана технология работы с ними. Для оценки уровня усвоения студентами пройденного материала предложены варианты заданий для самостоятельной работы.
Предназначено для бакалавров направлений подготовки 09.03.02 «Информационные системы и технологии», 22.03.01 «Материаловедение и технологии материалов», 28.03.02 «Наноинженерия», 18.03.01 «Химическая технология», 29.03.04 «Технология художественной обработки материалов», 29.03.05 «Конструирование изделий легкой промышленности».
Подготовлено на кафедре информатики и прикладной математики.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.02: Информационные системы и технологии
- 18.03.01: Химическая технология
- 22.03.01: Материаловедение и технологии материалов
- 28.03.02: Наноинженерия
- 29.03.04: Технология художественной обработки материалов
- 29.03.05: Конструирование изделий легкой промышленности
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство науки и высшего образования Российской Федерации Казанский национальный исследовательский технологический университет А. Н. Титов, Р. Ф. Тазиева ВВЕДЕНИЕ В TKINTER РАЗРАБОТКА ГРАФИЧЕСКИХ ИНТЕРФЕЙСОВ В PYTHON Учебно-методическое пособие Казань Издательство КНИТУ 2023
УДК 004.514(075) ББК 32.97я7 Т45 Печатается по решению редакционно-издательского совета Казанского национального исследовательского технологического университета Рецензенты: д-р пед. наук, доц. Ю. В. Торкунова канд. экон. наук, доц. О. С. Семичева Т45 Титов А. Н. Введение в Tkinter. Разработка графических интерфейсов в Python : учебно-методическое пособие / А. Н. Титов, Р. Ф. Тазиева; Минобрнауки России, Казан. нац. исслед. технол. ун-т. – Казань : Изд-во КНИТУ, 2023. – 100 с. ISBN 978-5-7882-3340-6 Рассмотрены примеры создания приложений с графическим интерфейсом с помощью библиотеки Tkinter. Приведены необходимые сведения по стандартным графическим компонентам, описана технология работы с ними. Для оценки уровня усвоения студентами пройденного материала предложены варианты заданий для самостоятельной работы. Предназначено для бакалавров направлений подготовки 09.03.02 «Информационные системы и технологии», 22.03.01 «Материаловедение и технологии материалов», 28.03.02 «Наноинженерия», 18.03.01 «Химическая технология», 29.03.04 «Технология художественной обработки материалов», 29.03.05 «Конструирование изделий легкой промышленности». Подготовлено на кафедре информатики и прикладной математики. УДК 004.514(075) ББК 32.97я7 ISBN 978-5-7882-3340-6 © Титов А. Н., Тазиева Р. Ф., 2023 © Казанский национальный исследовательский технологический университет, 2023 2
О Г Л А В Л Е Н И Е Введение ........................................................................................................ 4 1. ЭТАПЫ СОЗДАНИЯ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ................. 6 2. СОЗДАНИЕ ПРОСТОГО GUI-ПРИЛОЖЕНИЯ НА TKINTER ......... 7 3. РАБОТА С ВИДЖЕТАМИ В TKINTER ............................................. 12 4. ВИДЖЕТ LABEL ................................................................................... 14 5. ВИДЖЕТ BUTTON ................................................................................ 28 6. ВИДЖЕТ ENTRY .................................................................................. 34 7. ВИДЖЕТ TEXT ...................................................................................... 42 8. МЕТОД PACK() ..................................................................................... 48 9. МЕТОД GRID() ...................................................................................... 56 10. МЕТОД PLACE .................................................................................... 62 11. SCROLLBAR ........................................................................................ 65 12. RADIOBUTTON И CHECKBUTTON ................................................ 69 13. МОДУЛЬ TKMESSAGEBOX ............................................................. 81 14. ВИДЖЕТ SCALE ................................................................................. 84 15. ВИДЖЕТ COMBOBOX ....................................................................... 86 16. ВИДЖЕТ MENU .................................................................................. 88 17. ВИДЖЕТ NOTEBOOK ........................................................................ 90 18. МОДУЛЬ FILEDIALOG ...................................................................... 92 Задания для самостоятельной работы ..................................................... 96 Литература .................................................................................................. 99 3
В В Е Д Е Н И Е Для большинства программных систем графический интерфейс пользователя (Graphical User Interface, GUI) является неотъемлемой частью приложения. Все пользователи, работающие на компьютере, знакомы с такими графическими элементами, как окна, кнопки, текстовые поля, полосы прокрутки и т. д., используемыми при работе с программами. Большая часть работы с компьютерами сегодня осуществляется с помощью того или иного графического интерфейса вида point-and-click. Программы, от веб-браузера до системных инструментов, стандартно оснащаются компонентами GUI, повышающими гибкость и простоту их использования. В Python есть несколько GUI-фреймворков (framework – программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта), однако только Tkinter встроен в стандартную библиотеку языка. Tkinter (Tk interface) – кроссплатформенная библиотека, поэтому можно создавать приложения для различных операционных систем. Визуальные элементы отображаются через собственные элементы текущей операционной системы, поэтому приложения, созданные с помощью Tkinter, выглядят так, как будто они принадлежат той платформе, на которой работают. Tkinter – событийно-ориентированная библиотека, разработанная Гвидо ван Россумом – создателем языка Python. С ее помощью можно написать простой и в то же время функциональный интерфейс для проекта на Python. Это фактически пакет, предназначенный для работы с библиотекой Tk. Библиотека Tk содержит компоненты графического интерфейса пользователя, написанные на языке программирования Tcl. Хотя Tkinter является популярным GUI-фреймворком на Python, у него есть свои недостатки. Один из них заключается в том, что графические интерфейсы, созданные с использованием Tkinter, выглядят примитивными. Для создания современного, броского интерфейса есть модуль PyQt5. Тем не менее в плане использования Tkinter является относительно легким по сравнению с другими библиотеками. Это отличный выбор для создания GUI-приложений в Python, особенно если 4
современный облик для программы не в приоритете, а большую роль играет функциональность и кроссплатформенная скорость. В настоящее время появилась достаточна обширная литература по созданию GUI. Авторы поставили перед собой цель: собрать имеющуюся в их распоряжении информацию по работе в Tkinter и переработать ее с учетом тех типов задач, которые решаются в преподаваемых коллективом их кафедры дисциплинах: «Программирование», «Проектирование графических и пользовательских интерфейсов». Авторы надеются облегчить восприятие изложенного материала, снабдив пособие большим количеством примеров и пояснений к ним. Пособие включает в себя 18 глав, в каждой из которых показана работа с определенным графическим элементом: текстовыми метками label, кнопками button, однострочными и многострочными текстовыми полями entry и text, переключателями и флажками radiobutton и checkbox, полосами прокрутками и шкалами scrollbar и scale, разделами меню menu. Для группировки объектов рассмотрена работа с такими виджетами, как frame, notebook. Приведен синтаксис создания графического элемента, описаны атрибуты виджета, его назначение, события, которые поддерживаются виджетом. Показаны особенности размещения объектов в главном окне с использованием методов pack(), place(), grid(). Кроме стандартных компонентов управления, в пособии рассмотрена работа с диалоговыми окнами для поддержки работы с каталогами и файлами при их открытии и сохранении, диалоговые окна для управления шрифтом, цветом. С помощь модуля tkMessageBox можно получить доступ к ряду встроенных окон для различных ситуаций, отображения некоторой информации, ошибок и предупреждений. Материал, изложенный в пособии, может быть использован при проведении лабораторных занятий по преподаваемым кафедрой информатики и прикладной математики дисциплинам. Используемая в пособии версия – Tkinter 8.6. 5
. Э Т А П Ы С О З Д А Н И Я Г Р А Ф И Ч Е С К О Г О И Н Т Е Р Ф Е Й С А Под графическим интерфейсом пользователя (GUI) подразумеваются все те окна, кнопки, текстовые поля для ввода, полосы прокрутки, списки, радиокнопки, флажки и др., которые отображаются на экране при открытии того или иного приложения. С их помощью происходит взаимодействие с программой и управление ею. Все эти элементы интерфейса вместе называют виджетами (widgets). В Python для создания графических интерфейсов на основе компоновки элементов управления (виджетов) предназначена библиотека Tkinter. Если ее импортировать в программу (скрипт), то можно пользоваться ее компонентами, создавая графический интерфейс. Этапы разработки интерфейса с GUI следующие: – импорт библиотеки; – создание главного окна; – создание виджетов; – установка их свойств; – определение событий; – определение обработчиков событий; – расположение виджетов на главном окне; – отображение главного окна. 6
. С О З Д А Н И Е П Р О С Т О Г О G U I - П Р И Л О Ж Е Н И Я Н А T K I N T E R Сначала создадим окно с одним виджетом. Запустим среду разработки IDLE Python. Первым делом необходимо импортировать модуль Tkinter. Далее приведены три способа импорта: import tkinter as tk from tkinter import * from tkinter.ttk import * В пособии чаще всего будет использоваться второй способ, что позволит не указывать каждый раз имя модуля при обращении к объектам, которые в нем содержатся. Модуль ttk обладает большей функциональностью относительно стилизации объектов, однако он не полностью совместим с объектами tkinter. В рамках данного учебного пособия будет показано, как работать с виджетами обоих модулей. Главным элементом GUI Tkinter является окно. Окнами называют контейнеры, в которых находятся все GUI-элементы, которые называются виджетами. Виджет – это элемент графического пользовательского интерфейса, который отображает/иллюстрирует информацию или дает пользователю возможность взаимодействовать с ОС. К числу виджетов относятся текстовые поля, текстовые метки, кнопки, выпадающие списки, меню и другие элементы. Окно, или window, является экземпляром класса Tkinter. Корневое окно является основным окном приложения в программе. У него присутствуют заголовок и границы, реализованные менеджером окон. Корневое окно необходимо создавать для любых виджетов. Создадим корневое (root) окно. Объект окна верхнего уровня создается при обращении к классу Tk модуля tkinter: root = Tk(). При выполнении указанного кода в среде IDLE на экране появится новое окно. То, как оно будет выглядеть, зависит от операционной системы. Как оно выглядит в Windows – см. на рис. 2.1. Параметры окна можно настроить. Например, можно сделать так, чтобы размер окна оставался постоянным: root.resizable(width=False, height=False) – делаем неизменными ширину и высоту окна. Теперь можно задать тот размер, который нам нужен, например 300×200: root.geometry('300x200'). Окну можно присвоить имя: root.title('Корневое окно'). 7
Рис. 2.1. Корневое окно в среде IDLE Примеры настройки основных параметров окна представлены в табл. 2.1. Таблица 2.1 Методы и атрибуты настройки параметров окна Пример метода Пояснение Ширина × высота + вправо + вниз root.geometry("300x250+40+20") Задает ширину и высоту окна, его смещение от верхнего левого угла экрана root.geometry() Возвращает параметры окна root.resizable(False, False) Задает возможность растягивать окно по ширине и высоте root.minsize(200,150) Задает минимальный размер окна root.maxsize(400,300) Задает максимальный размер окна root.title("Мое приложение") Задает заголовок окно.config(cursor='umbrella') Задает тип курсора icon = PhotoImage(file = "f.png") root.iconphoto(False, icon) Задает рисунок иконки root['bg']='green' Задает цвет формы root.attributes("-fullscreen", True) Задает полноэкранный режим отображения окна root.attributes("-alpha", 0.5) Задает уровень прозрачности root.attributes("-toolwindow", True) Отключение верхней панели окна 8
С помощью метода attributes() можно установить отдельные атрибуты окна, для которых нет специальных методов. В качестве первого параметра метод принимает название атрибута, которое предваряется дефисом. Второй параметр – значение для этого атрибута. Например, можно растянуть окно на весь экран, передав атрибуту fullscreen значение True: root.attributes("-fullscreen", True), или отключить верхнюю панель окна (за исключением заголовка и крестика для закрытия): root.attributes("-toolwindow", True). Рис. 2.2. Окно с отключенной верхней панелью Рассмотрим задание характеристик главного окна на примере. Изменим форму курсора для окна с помощью метода config: root.config(cursor=umbrella): from tkinter import * root = Tk() root.resizable(width=False, height=False) root.geometry('300x200') root.title('Корневое окно') root.wm_attributes('-alpha',0.8) root ['bg']='green' root.config(cursor='umbrella') root.mainloop() Результат выполнения кода представлен на рис. 2.3. Рис. 2.3. Окно с примененными настройками Теперь внутри окна курсор будет иметь форму зонтика. Некоторые другие возможные значения атрибута cursor: boat, circle, clock, coffee_mug, cross, crosshair, diamond_cross, dot, dotbox, double_arrow, heart, icon, mouse, pencil, pirate, sailboat, shuttle, spider, star, top_tee, watch. 9
Можно задать смещение от верхней левой точки экрана на заданное количество пикселей по осям X и Y, например: root.geometry('600x400+200+100'). Окно будет располагаться на 200 пикселей вправо и на 100 пикселей вниз от левого угла экрана. Если оба значения отрицательны, то отсчет происходит от нижних правых углов экрана и окна. Возможна комбинация положительного и отрицательного значений. Так, команда root.geometry("280x200+0-0") помещает окно в левый нижний угол экрана. Перед заголовком окна установлена иконка. По умолчанию это перо. Можно заменить ее на любую другую иконку с помощью метода iconbitmap(): root.iconbitmap('D://Рабочий стол//VietNam.ico'). Результат замены иконки показан на рис. 2.4. Рис. 2.4. Окно с измененной иконкой Если в качестве иконки необходимо задать файл с расширением .png, то это можно сделать таким образом: from tkinter import * root=TK() image1=PhotoImage(file='Sunrise.png') root.iconphoto(False, image1) root.mainloop() В последнем случае не передан путь к иконке, так как файл с ней располагался в одной папке с файлом приложения. Первый параметр метода iconphoto() указывает, надо ли использовать иконку по умолчанию для всех окон приложения. Второй параметр – объект PhotoImage, который устанавливает файл изображения (здесь файл 'Sunrise.png'). Если необходимо окно без иконки, можно определить и подключить прозрачную иконку. Можно это сделать также динамически без наличия реального файла: from tkinter import * import tempfile, base64, zlib # создание в памяти временного файла с иконкой ICON=zlib.decompress(base64.b64decode ("eJxjYGAEQgEBBiDJwZDBysAgxsDAoAHEQCEGBQaIOAg4s DIgACMUj4JRMApGwQgF/ykEAFXxQRc=")) 10