Использование tkinter в python 3

Содержание
  1. Создание окна по центру и кнопка выхода в Tkinter
  2. Содержание курса
  3. Содержание статьи
  4. Tkinter библиотека для создания графических интерфейсов
  5. Язык программирования Python
  6. Создание обычного окна в Tkinter
  7. Курс по библиотеке Tkinter языка Python
  8. Содержание
  9. Введение [ ]
  10. Что такое tkinter? [ ]
  11. Основные виджеты [ ]
  12. Button [ ]
  13. Label [ ]
  14. Entry [ ]
  15. Listbox [ ]
  16. Frame [ ]
  17. Checkbutton [ ]
  18. Radiobutton [ ]
  19. Упаковщики [ ]
  20. place() [ ]
  21. Привязка событий [ ]
  22. Продвинутые виджеты [ ]
  23. Scale [ ]
  24. Scrollbar [ ]
  25. Введение в Tkinter
  26. Hello world
  27. Текстовый редактор
  28. Tkinter – примеры и руководство как делать GUI на Python
  29. Создайте свое первое приложение с графическим интерфейсом
  30. Создание виджета label
  31. Установка размера шрифта метки
  32. Установка размера окна
  33. Добавление виджета кнопки
  34. Изменение цвета фона и шрифта кнопки.
  35. Обработка события нажатия кнопки
  36. Ввод данных с помощью класса Entry (текстовое поле Tkinter)
  37. Установка фокуса на виджете ввода
  38. Отключение виджета ввода
  39. Добавление виджета combobox
  40. Добавление виджета Checkbutton (Tkinter checkbox)
  41. Установка состояния Checkbutton
  42. Добавление виджета radio button
  43. Получить значение радиокнопки (выбранный вариант)
  44. Добавление виджета ScrolledText (Tkinter textarea)
  45. Установка содержимого scrolledtext.
  46. Удаление/очистка содержимого scrolledtext
  47. Создание MessageBox
  48. Отображение сообщений об ошибках и предупреждений
  49. Отображение диалоговых окон с вопросами и ответами
  50. Добавление SpinBox (виджет чисел)
  51. Установка значения по умолчанию для Spinbox
  52. Добавление виджета Progressbar
  53. Изменение цвета Progressbar
  54. Окно добавления файла (выбор файла и каталога).
  55. Указание типов файлов (фильтр по расширению)
  56. Добавление меню
  57. Добавление виджета Notebook (элемент управления вкладками)
  58. Добавление виджетов на вкладки
  59. Добавление отступов у виджетов (spacing или padding)
  60. Похожие записи

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

tkinter introduction 2

В этой части обучения 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 языка Python

Содержание

Введение [ ]

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

Что такое tkinter? [ ]

Основные виджеты [ ]

Button [ ]

Далее, нашу кнопку необходимо разместить на окне. Для этого, в Tkinter используются специальные упаковщики( pack(),place(), grid() ). Поподробнее об упаковщиках узнаем позже. Пока, чтобы разместить несколько виджетов на окне, будем применять самый простой упаковщик pack(). В конце программы, нужно использовать функцию mainloop(см. пример), иначе окно не будет создано.

Label [ ]

Entry [ ]

Listbox [ ]

Стоит заметить, что в этой библиотеке для того, чтобы использовать русские буквы в строках, нужно использовать Unicode-строки. В Python 2.x для этого нужно перед строкой поставить букву u, в Python 3.x этого делать вообще не требуется, т.к. все строки в нем изначально Unicode.

Frame [ ]

Виджет Frame (рамка) предназначен для организации виджетов внутри окна. Рассмотрим пример:

Свойство bd отвечает за расстояние от края рамки до виджетов.

Checkbutton [ ]

Radiobutton [ ]

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

В этом виджете используется уже одна переменная. В зависимости от того, какой пункт выбран, она меняет своё значение. Самое интересное, что если присвоить этой переменной какое-либо значение, поменяется и выбранный виджет. На этом мы прервём изучение типов виджетов (потом мы к ним обязательно вернёмся).

Упаковщики [ ]

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

place() [ ]

При использовании этого упаковщика, нам необходимо указывать координаты каждого виджета. Например:

Этот упаковщик представляет окно как сетку с ячейками, в которые помещаются, собственно, виджеты. Имеет три свойства:

Для каждого виджета указываем, в какой он находится строке, и в каком столбце. Если нужно, указываем, сколько ячеек он занимает (если, например, нам нужно разместить три виджета под одним, необходимо «растянуть» верхний на три ячейки). Например:

Привязка событий [ ]

Метод bind привязывает событие к какому-либо действию (будь то нажатие кнопки мыши, клавиши и т.д.). Вот основные действия:

Если вы хотите, чтобы событие возникало при нажатии комбинации клавиш, нужно указать их через тире, например:

Событие описывается обычной функцией. Например:

Продвинутые виджеты [ ]

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

Scale [ ]

Здесь используется специальный метод get(), который позволяет снять с виджета определенное значение, и используется не только в Scale.

Scrollbar [ ]

Этот виджет даёт возможность пользователю «прокрутить» другой виджет (например текстовое поле) и часто бывает полезен. Реализация этого виджета достаточно оригинальна (рассмотрим её на примере):

Мы указываем свойством command, какой виджет будет прокручиваться и привязываем Scrollbar к текстовому полю при помощи команды set().

Источник

Введение в Tkinter

image loader

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

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

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

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

image loader

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

Hello world

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

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

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

Упаковщики

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

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

image loader

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

image loader

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

image loader

Теперь для демонстрации других возможностей 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 – примеры и руководство как делать GUI на Python

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

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

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

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

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

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

2021 05 19 17 13 06

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

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

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

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

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

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

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

2021 05 19 17 22 14

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

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

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

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

2021 05 19 17 25 48

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

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

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

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

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

2021 05 19 17 29 30

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

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

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

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

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

2021 05 19 17 34 04

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

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

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

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

2021 05 19 17 37 15

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

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

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

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

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

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

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

2021 05 19 17 43 39

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

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

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

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

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

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

2021 05 19 17 50 47

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

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

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

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

2021 05 19 18 00 55

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

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

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

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

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

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

2021 05 19 18 06 07

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

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

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

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

2021 05 19 18 10 58

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

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

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

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

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

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

2021 05 19 18 17 04

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

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

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

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

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

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

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

2021 05 19 18 25 19

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

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

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

2021 05 19 18 35 40

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

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

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

2021 05 19 18 40 08

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

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

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

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

Создание MessageBox

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

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

2021 05 19 18 48 05

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

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

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

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

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

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

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

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

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

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

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

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

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

2021 05 19 19 19 19

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2021 05 19 19 29 17

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

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

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

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

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

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

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

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

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

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

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

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

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

2021 05 19 20 05 40

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

2021 05 19 20 08 56

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

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

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

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

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

2021 05 19 20 19 30

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

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

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

2021 05 19 20 23 21

2021 05 19 20 23 38

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

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

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

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

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

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

Python

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

Python

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

Python

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

Источник

Adblock
detector