from tkinter import что это

Создание окна по центру и кнопка выхода в Tkinter

В этой части обучения Tkinter мы познакомим Вас с инструментом Tkinter и создадим первые программы. Целью этого руководства является ознакомление с базой инструментария Tkinter. Я использовал несколько иконок из набора Tango от Gnome project.

Содержание курса

Содержание статьи

Tkinter библиотека для создания графических интерфейсов

Tkinter – это графическая библиотека на основе Tk, которая входит в стандартную библиотеку Python. Tk является библиотекой базовых элементов графического интерфейса для языка Tcl. Tkinter реализован как оболочка Python для Tcl интерпретатора, встроенного в интерпретатор Python. Существует и несколько других популярных графических инструментов для Python. Наиболее популярными являются wxPython, PyQt5 и PyGTK.

Язык программирования Python

Python – это высокоуровневый, динамичный, объектно-ориентированный язык программирования. Он ориентирован на повышение производительности программиста и читаемости кода. Разработчиком кода является Гвидо ван Россум. Впервые язык увидел свет в 1991 году. При создании Python, автор вдохновлялся такими языками программирования как ABC, Haskell, Java, Lisp, Icon и Perl. Python является высокоуровневым, кроссплатформенным, но в то же время минималистичным языком. Одним из его основных преимуществ является отсутствие скобок и точек с запятой. Вместо этого Python использует отступы. Сегодня существует две основные ветви языка: Python 2.7 и Python 3.x.

Стоит отметить, что Python 3 нарушает обратную совместимость с предыдущими версиями языка. Его разработали для того, чтобы исправить ряд недостатков конструкции уже существующего языка, упростить и очистить его от ненужных деталей. Последней версией Python 2.x является 2.7.17, а Python 3.x – 3.8.5. Данный учебник написан на Python 2.x, равно как и большая часть кода. Мы обновили учебник под Python 3.8.

Для перехода программного обеспечения и самих разработчиков на Python 3.x потребуется какое-то время. Уже перешли все на Python 3. Сегодня Python поддерживается большим количеством добровольцев со всего мира. Напомню, что язык имеет открытый исходный код.

Python – это идеальный язык для тех людей, которые хотят научиться программировать.

Язык программирования Python поддерживает несколько стилей программирования. Он не принуждает разработчика придерживаться определенной парадигмы. Python поддерживает объектно-ориентированное и процедурное программирование. Существует и ограниченная поддержка функционального программирования.

Создание обычного окна в Tkinter

В нашем первом примере мы покажем стандартное окно на экране.

Источник

Введение в Tkinter

Всем доброго времени суток!

Tkinter – это кроссплатформенная библиотека для разработки графического интерфейса на языке Python (начиная с Python 3.0 переименована в tkinter). Tkinter расшифровывается как Tk interface, и является интерфейсом к Tcl/Tk.
Tkinter входит в стандартный дистрибутив Python.

Весь код в этой статье написан для Python 2.x.
Чтобы убедиться, что Tkinter установлен и работает, воспользуемся стандартной функцией Tkinter _test():

После выполнения данного кода должно появиться следующее окно:

Отлично, теперь можно приступать к написанию нескольких простых программ для демонстрации основных принципов Tkinter.

Hello world

Конечно, куда же без него. Первым делом нам нужно создать главное окно, написав

Да-да, всего одна строка, это вам не WinAPI (=. Теперь создадим кнопку, при нажатии на которую будет выводиться текст в консоль:

Всё просто, не так ли? Создаём экземпляр класса Button, указываем родителя и при желании список параметров. Есть еще немало параметров, таких как шрифт, толщина рамки и т.д.
Затем привязываем к нажатию на кнопку событие (можно привязать несколько разных событий в зависимости, например, от того, какой кнопкой мыши был нажат наш btn.
mainloop() запускает цикл обработки событий; пока мы не вызовем эту функцию, наше окно не будет реагировать на внешние раздражители.

Упаковщики

Функция pack() — это так называемый упаковщик, или менеджер расположения. Он отвечает за то, как виджеты будут располагаться на главном окне. Для каждого виджета нужно вызвать метод упаковщика, иначе он не будет отображён. Всего упаковщиков три:

pack(). Автоматически размещает виджеты в родительском окне. Имеет параметры side, fill, expand. Пример:

grid(). Размещает виджеты на сетке. Основные параметры: row/column – строка/столбец в сетке, rowspan/columnspan – сколько строк/столбцов занимает виджет. Пример:

place(). Позволяет размещать виджеты в указанных координатах с указанными размерами.
Основные параметры: x, y, width, height. Пример:

Теперь для демонстрации других возможностей Tkinter, напишем простейший

Текстовый редактор

Без лишних слов приведу код:

Здесь есть несколько новых моментов.

Во-первых, мы подключили модуль tkFileDialog для диалогов открытия/закрытия файла. Использовать их просто: нужно создать объект типа Open или SaveAs, при желании задав параметр filetypes, и вызвать его метод show(). Метод вернёт строку с именем файла или пустую строку, если пользователь просто закрыл диалог.

Во-вторых, мы создали два фрейма. Фрейм предназначен для группировки других виджетов. Один содержит управляющие кнопки, а другой — поле для ввода текста и полосу прокрутки.
Это сделано, чтобы textbox не налезал на кнопки и всегда был максимального размера.

В-третьих, появился виджет Text. Мы его создали с параметром wrap=’word’, чтобы текст переносился по словам. Основные методы Text: get, insert, delete. Get и delete принимают начальный и конечный индексы. Индекс — это строка вида ‘x.y’, где x — номер символа в строке, а y — номер строки, причём символы нумеруются с 1, а строки — с 0. То есть на самое начала текста указывает индекс ‘1.0’. Для обозначения конца текста есть индекс ‘end’. Также допустимы конструкции вида ‘1.end’.

Читайте также:  Что значит томная девушка

B в-четвёртых, мы создали полосу прокрутки (Scrollbar). После создания её нужно связать с нужным виджетом, в данном случае, с textbox. Связывание двустороннее:

Вот и всё. Tkinter – это, безусловно, мощная и удобная библиотека. Мы осветили не все её возможности, остальные — тема дальнейших статей.

Источник

Что такое Tkinter

Tkinter – это пакет для Python, предназначенный для работы с библиотекой Tk. Библиотека Tk содержит компоненты графического интерфейса пользователя (graphical user interface – GUI). Эта библиотека написана на языке программирования Tcl.

Под графическим интерфейсом пользователя (GUI) подразумеваются все те окна, кнопки, текстовые поля для ввода, скроллеры, списки, радиокнопки, флажки и др., которые вы видите на экране, открывая то или иное приложение. Через них вы взаимодействуете с программой и управляете ею. Все эти элементы интерфейса будем называть виджетами (widgets).

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

Существует множество библиотек GUI, среди которых Tk не самый популярный инструмент, хотя с его помощью написано немало проектов. Он был выбран для Python по-умолчанию. Установочный файл интерпретатора Питона обычно уже включает пакет tkinter в составе стандартной библиотеки.

Tkinter можно представить как переводчик с языка Python на язык Tcl. Вы пишете программу на Python, а код модуля tkinter переводит ваши инструкции на язык Tcl, который понимает библиотека Tk.

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

Событийно-ориентированное программирование базируется на объектно-ориентированном и структурном. Даже если мы не создаем собственных классов и объектов, то все-равно ими пользуемся. Все виджеты – объекты, порожденные встроенными классами.

Tkinter импортируется стандартно для модуля Python любым из способов:

Если необходимо, узнать установленную версию Tk можно через константу TkVersion:

Чтобы написать GUI-программу, надо выполнить приблизительно следующее:

Создать главное окно.

Создать виджеты и выполнить конфигурацию их свойств (опций).

Определить события, то есть то, на что будет реагировать программа.

Описать обработчики событий, то есть то, как будет реагировать программа.

Расположить виджеты в главном окне.

Запустить цикл обработки событий.

Последовательность не обязательно такая, но первый и последний пункты всегда остаются на своих местах. Посмотрим все это в действии.

Устанавливать свойства объектов не обязательно при их создании. Существуют еще пара способов, с помощью которых это можно сделать после.

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

Однако виджеты не обязательно располагаются на root ‘е. Они могут находиться на других виджетах, и тогда указывать «мастера» необходимо.

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

Теперь необходимо связать вызов функции с событием:

В любом приложении виджеты не разбросаны по окну как попало, а организованы, интерфейс продуман до мелочей и обычно подчинен определенным стандартам. Пока расположим элементы друг под другом с помощью наиболее простого менеджера геометрии tkinter – метода pack :

Метод mainloop экземпляра Tk запускает главный цикл обработки событий, что в том числе приводит к отображению главного окна со всеми «упакованными» на нем виджетами:

Полный код программы:

В результате выполнения данного скрипта появляется окно, в текстовое поле которого можно ввести список слов, нажать кнопку и получить его отсортированный вариант:

Теперь напишем сам класс Block:

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

Тогда можно передавать значения для свойства command в конструктор. Значение будет представлять собой привязываемую к кнопке функцию-обработчик события. Полный код программы:

При выполнения этого кода в окне будут выведены два однотипных блока, кнопки которых выполняют разные действия.

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

Практическая работа

Напишите простейший калькулятор, состоящий из двух текстовых полей, куда пользователь вводит числа, и четырех кнопок «+», «-«, «*», «/». Результат вычисления должен отображаться в метке. Если арифметическое действие выполнить невозможно (например, если были введены буквы, а не числа), то в метке должно появляться слово «ошибка».

Курс с примерами решений практических работ: android-приложение, pdf-версия.

Источник

Tkinter – примеры и руководство как делать GUI на Python

В этом руководстве мы научимся разрабатывать графические интерфейсы пользователя (GUI), написав несколько примеров GUI на Python с использованием пакета Tkinter.

Читайте также:  Что значит функция abs

Пакет Tkinter включен в Python как стандартный, поэтому вам не нужно ничего устанавливать для его использования.

Я предполагаю, что у вас есть некоторые базовые знания Python, которые помогут вам понять, что мы делаем.

Мы начнем с создания окна, затем научимся добавлять виджеты, такие как кнопки, комбобоксы и т.д., а затем поиграем с их свойствами. Итак, поехали.

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

Сначала мы импортируем пакет Tkinter, создадим окно и зададим его заголовок:

Невероятно! Наше приложение работает.

Последняя строка вызывает функцию mainloop. Эта функция запускает бесконечный цикл окна, поэтому оно будет открыто, пока мы его сами не закроем.

Если вы забудете вызвать функцию mainloop, пользователю ничего не будет показано.

Создание виджета label

Чтобы добавить метку к нашему предыдущему примеру, мы создадим ее с помощью класса label:

Затем мы установим его положение с помощью функции grid вот так:

Итоговый код будет выглядеть следующим образом:

Без вызова функции grid для label метка не появится.

Установка размера шрифта метки

Вы можете настроить шрифт метки, чтобы сделать его более крупным или, возможно, жирным. Кроме того, можно изменить стиль шрифта.

Для этого передайте дополнительный параметр font:

Следует отметить, что параметр font может быть передан любому виджету для изменения его шрифта, а не только меткам.

Все замечательно. Но окно настолько маленькое, что мы даже не видим заголовок. Как установить размер окна?

Установка размера окна

Мы можем установить размер окна по умолчанию, используя функцию geometry:

Приведенная выше строка устанавливает ширину окна в 350 пикселей и высоту в 200 пикселей.

Давайте попробуем добавить больше виджетов в виде кнопок и посмотрим, как обрабатывать событие нажатия на кнопку.

Добавление виджета кнопки

Давайте начнем с добавления кнопки на окно. Кнопка создается и добавляется так же, как и метка:

В результате код будет выглядеть следующим образом:

Результат будет выглядеть так:

Обратите внимание, что мы размещаем кнопку во втором столбце окна, то есть в столбце 1. Если забыть об этом и поместить кнопку в тот же столбец (в данном случае 0), то будет отображаться только кнопка, так как кнопка будет находиться над меткой.

Изменение цвета фона и шрифта кнопки.

Вы можете изменить цвет текста кнопки или любого другого виджета с помощью свойства fg.

Также с помощью свойства bg можно изменить цвет фона любого виджета.

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

Обработка события нажатия кнопки

Сначала мы напишем функцию, которая должна выполняться при нажатии на кнопку:

Затем мы свяжем её с кнопкой, указав функцию следующим образом:

Обратите внимание, что мы пишем просто clicked, а не clicked() со скобками.

Теперь весь код будет выглядеть следующим образом:

Когда мы жмем на кнопку, то получаем нужный результат:

Ввод данных с помощью класса Entry (текстовое поле Tkinter)

В предыдущих примерах графического интерфейса Python мы рассмотрели, как добавлять простые виджеты. Теперь давайте попробуем получить данные от пользователя, используя класс Tkinter Entry (текстовое поле Tkinter).

Вы можете создать текстовое поле с помощью класса Tkinter Entry следующим образом:

Далее вы можете добавить виджет в окно с помощью функции grid, как и раньше.

Наш код будет выглядеть так::

Результат будет следующим:

Теперь, если вы нажмете на кнопку, будет выведено то же сообщение, что и выше. Как насчет показа текста, набранного в виджете ввода?

Мы можем получить введенный текст с помощью функции get. Затем мы можем добавить его в нашу функцию clicked, например, так:

Если вы нажмете на кнопку и в виджете ввода будет текст, он покажет “Добро пожаловать, “, соединенный с введенным текстом.

Запустите приведенный выше код и проверьте результат:

Каждый раз, когда мы запускаем код, мы должны кликнуть на виджет ввода, чтобы установить фокус для написания текста. Давайте попробуем установить фокус автоматически?

Установка фокуса на виджете ввода

Это очень просто, все, что нам нужно сделать, это вызвать функцию focus:

Когда вы запустите код, вы заметите, что вы можете сразу же набирать текст – курсор установится в поле автоматически.

Отключение виджета ввода

Чтобы отключить виджет ввода, можно установить свойство state в значение disabled:

Теперь вы больше не можете вводить никакой текст.

Добавление виджета combobox

Чтобы добавить виджет combobox, можно использовать класс Combobox из библиотеки ttk, как показано ниже:

Затем вы можете добавить значения в список.

Как вы видите, мы добавляем элементы combobox, используя кортеж значений.

Чтобы установить выбранный элемент, можно передать индекс нужного элемента функцию current.

Чтобы получить выбранный элемент, можно использовать функцию get, как показано ниже:

Добавление виджета Checkbutton (Tkinter checkbox)

Чтобы создать виджет Checkbutton, вы можете использовать класс Checkbutton:

Кроме того, вы можете установить состояние “checked”, передав значение активации кнопке Checkbutton, как показано ниже:

Установка состояния Checkbutton

Здесь мы создаем переменную типа BooleanVar, которая не является стандартной переменной Python, это переменная Tkinter. Затем мы передаем его в класс Checkbutton для установки состояния галочки, как показано выше. Вы можете установить булево значение false, чтобы отключить отметку.

Также вы можете использовать IntVar вместо BooleanVar и установить значение 0 или 1.

Читайте также:  с какими странами россия не имеет морских границ

Добавление виджета radio button

Чтобы их добавить, вы можете использовать класс RadioButton, как показано ниже:

Обратите внимание, что вы должны установить для каждой радиокнопки свое значение, иначе они не будут работать.

Результат выполнения приведенного выше кода выглядит следующим образом:

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

Получить значение радиокнопки (выбранный вариант)

Чтобы получить текущую выбранную радиокнопку или значение радиокнопки, вы можете передать радиокнопкам параметр variable, а затем взять его значение.

Добавление виджета ScrolledText (Tkinter textarea)

Чтобы добавить виджет ScrolledText, вы можете использовать класс ScrolledText, как показано ниже:

Мы указываем ширину и высоту виджета, иначе он заполнит все окно.

Установка содержимого scrolledtext.

Чтобы задать содержимое у scrolledtext, можно использовать метод insert, как показано ниже:

Удаление/очистка содержимого scrolledtext

Чтобы удалить содержимое виджета с прокруткой текста, можно использовать метод delete, как показано ниже:

Создание MessageBox

Чтобы отобразить окно сообщения с помощью Tkinter, вы можете использовать библиотеку messagebox, как показано ниже:

Покажем сообщение, когда пользователь нажмет на кнопку.

Когда вы нажмете на кнопку, появится информационное окно с сообщением.

Отображение сообщений об ошибках и предупреждений

Таким же можно отобразить предупреждающее сообщение или сообщение об ошибке. Единственное, что необходимо изменить messagebox.showinfo на messagebox.showwarning или messagebox.showerror.

Отображение диалоговых окон с вопросами и ответами

Чтобы отобразить пользователю окно сообщения “да/нет”, можно использовать одну из следующих функций messagebox:

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

Вы также можете проверить, какую кнопку нажал пользователь, используя переменную result.

Если вы нажмете OK, или “да”, или “повторить попытку”, то вернется True, а если вы выберете “нет” или “отмена”, то вернется False.

Добавление SpinBox (виджет чисел)

Чтобы создать данный виджет, вы можете использовать класс Spinbox, как показано ниже:

Здесь мы создаем виджет Spinbox и передаем параметры from_ и to, чтобы указать диапазон чисел для Spinbox.

Кроме того, вы можете указать ширину виджета с помощью параметра width:

Давайте посмотрим весь пример:

Вы можете указать числа для Spinbox вместо использования всего диапазона, например, так:

В результате виджет Spinbox покажет только 3 числа: 3, 8 и 11.

Установка значения по умолчанию для Spinbox

Чтобы установить значение по умолчанию для Spinbox, вы можете передать его в параметр textvariable, как показано ниже:

Теперь, если вы запустите программу, Spinbox отобразит значение по умолчанию 36.

Добавление виджета Progressbar

Чтобы создать прогресс-бар, вы можете использовать класс progressbar, как показано ниже:

Значение шкалы можно задать следующим образом:

Вы можете установить это значение в соответствии с нужным вам процессом, например, загрузкой файла или выполнением задачи.

Изменение цвета Progressbar

Изменение цвета прогрессбара сначала кажется немного сложным, но на самом деле это очень просто.

Сперва мы создадим стиль, затем в этом стиле установим цвет фона, и, наконец, присвоим стиль Progressbar’у.

Посмотрите следующий пример:

Результат будет выглядеть так:

Окно добавления файла (выбор файла и каталога).

Для создания такого окна вы можете использовать класс filedialog, как показано ниже:

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

Вы также можете выбрать несколько файлов:

Указание типов файлов (фильтр по расширению)

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

Директорию можно получить с помощью метода askdirectory:

Вы можете указать начальный каталог, указав initialdir:

Добавление меню

Чтобы добавить меню, вы можете использовать класс menu:

Сначала мы создадим меню. Затем мы добавляем нашу первую метку. После этого мы назначаем меню окну.

Вы можете добавить пункты в любое меню с помощью функции add_cascade(), например, так:

Наш код будет выглядеть так:

Вы можете добавить столько пунктов, сколько захотите.

Здесь мы добавим еще один пункт меню под названием “Редактировать” с разделителем.

Вы можете отключить пунктирную линию в верхней части выпадающего списка:

Вы можете написать любой код, который срабатывает при нажатии пользователем на любой пункт меню, указав свойство command.

Добавление виджета Notebook (элемент управления вкладками)

Чтобы создать блок управления вкладками, необходимо выполнить три шага.

Вы можете добавить столько вкладок, сколько захотите.

Добавление виджетов на вкладки

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

Добавление отступов у виджетов (spacing или padding)

Вы можете добавить отступы элементам, чтобы они выглядели красиво скомпонованными, используя свойства padx и pady.

Просто передайте padx и pady любому виджету и присвойте им значение.

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

Надеюсь, эти примеры будут вам полезны.

Похожие записи

Сравнивать даты в Python очень просто. Для этого достаточно использовать операторы сравнения. В этой статье…

Некоторое время назад у меня возникла ошибка при вызове https-адреса в pyhon. После долгих поисков…

В этой статье о Python мы рассмотрим, как получить наименьшее общее кратное (НОК) двух чисел.…

Источник

Сказочный портал