Tkinter

Поделись знанием:
Перейти к: навигация, поиск

Tkinter (от англ. Tk interface) — кросс-платформенная графическая библиотека на основе средств Tk (широко распространённая в мире GNU/Linux и других UNIX‐подобных систем, портирована так же и на Microsoft Windows), написанная Стином Лумхольтом (Steen Lumholt) и Гвидо ван Россумом[1]. Входит в стандартную библиотеку Python.





Назначение

Библиотека предназначена для организации диалогов в программе с помощью оконного графического интерфейса (GUI). В составе библиотеки присутствуют общие графические компоненты:

  • Toplevel

Окно верхнего уровня (корневой виджет)

  • Tk
  • Frame

Рамка. Содержит в себе другие визуальные компоненты

  • Label

Этикетка. Показывает некоторый текст или графическое изображение

  • Entry

Поле ввода текста

  • Canvas

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

  • Button

Кнопка. Простая кнопка для выполнения команды и других действий

  • Radiobutton

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

  • Checkbutton

Флажок. Кнопка, имеющая два состояния, при нажатии изменяет состояние на противоположное

  • Scale

Шкала. Позволяет задать числовое значение путём перемещения движка

  • Listbox

Список. Показывает список, из которых пользователь может выделить один или несколько элементов

  • Scrollbar

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

  • OptionMenu
  • Spinbox
  • LabelFrame
  • PanedWindow
  • Menu

Меню. Служит для организации всплывающих (popup) и ниспадающих (pulldown) меню

  • Menubutton

Кнопка-меню. Используется для организации pulldown-меню

  • Message

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

  • Text

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

Также следует отметить, что в Python присутствует набор дополнительных средств в модулях:

  • Canvas
  • Dialog
  • FileDialog
  • FixTk
  • ScrolledText
  • SimpleDialog
  • Tix
  • Tkconstants
  • Tkdnd
  • tkColorChooser
  • tkCommonDialog
  • tkFileDialog
  • tkFont
  • tkMessageBox
  • tkSimpleDialog
  • turtle

Пример: программа Hello World

from tkinter import *

root = Tk()
root.title("Hello World!")
root.geometry('300x40')

def button_clicked():
    print("Hello World!")

def close():
    root.destroy()
    root.quit()

button = Button(root, text="Press Me", command=button_clicked)
button.pack(fill=BOTH)

root.protocol('WM_DELETE_WINDOW', close)

root.mainloop()

Разбор программы

Приведённый пример демонстрирует простейшее приложение GUI на Python. Первая строка программы импортирует модуль tkinter (до версии 3.1 языка Python, название модуля tkinter писалось в коде с прописной буквы — «Tkinter»):

from tkinter import *

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

Следующая команда создаёт корневое (root) окно программы (далее окно):

root = Tk()

Следующая команда меняет заголовок окна:

root.title("Hello World!")

Следующая команда устанавливает размеры окна:

root.geometry('300x40')

Далее следует определение функции-обработчика события «нажата кнопка мыши».

def button_clicked():
    print("Hello World!")

Функция-обработчик события «закрытие главного окна». Она останавливает главный цикл приложения и разрушает главное окно. Без неё закрыть программу можно лишь если завершить процесс интерпретатора Python. Поскольку функция использует глобальную переменную root, объявление самой функции должно следовать после объявления переменной root.

def close():
    root.destroy()
    root.quit()

Создаем кнопку с текстом «Press Me», и привязываем её к вышеопределенной функции-обработчику:

button = Button(root, text="Press Me", command=button_clicked)

«Упаковываем» созданную кнопку с помощью менеджера компоновки pack. fill=BOTH (также можно fill="both") указывает кнопке занимать все доступное пространство (по ширине и высоте) на родительском виджете root:

button.pack(fill=BOTH)

Привязываем событие закрытия главного окна с функцией-обработчиком close:

root.protocol('WM_DELETE_WINDOW', close)

Запускаем главный цикл приложения:

root.mainloop()

В результате нажатия кнопки в консоли будет выведено сообщение «Hello, World!». Сообщение будет выводиться каждый раз при нажатии кнопки.

См. также

Напишите отзыв о статье "Tkinter"

Примечания

  1. [examples.oreilly.com/9781565921979/cdrom/www.python.org/doc/life-preserver/ Matt Conway, Tkinter Life Preserver] (англ.)

Литература

  • John E. Grayson. Python and Tkinter Programming. — Manning Publications, 1999. — 658 p. — ISBN 9781884777813.
  • Сузи Р. А. [www.intuit.ru/department/pl/python/12/ Создание приложений с графическим интерфейсом пользователя] // Язык программирования Python: Учебное пособие. — М.: Интуит, Бином. Лаборатория знаний, 2006. — 328 с. — ISBN 5-9556-0058-2.

Ссылки

  • [wiki.python.org/moin/TkInter Официальный сайт] (англ.)
  • [ru.wikibooks.org/wiki/Tkinter_book Справка по TkInter (Автор: В. И. Евгеньевич)]
  • [docs.python.org/library/tkinter.html Документация] (англ.)
  • Fredrik Lundh. [www.pythonware.com/library/tkinter/introduction/ An Introduction to Tkinter]. Проверено 12 октября 2012. [www.webcitation.org/6BWTYzPuj Архивировано из первоисточника 19 октября 2012].
  • [www.russianlutheran.org/python/python.html Школа Python/Tk] (переводы на русский язык некоторых материалов по Python/Tkinter)
    • Conway M. [www.russianlutheran.org/python/life/life.htm Спасательный круг для изучающих Tkinter]. Проверено 12 октября 2012. [www.webcitation.org/6BWTZZ9Vu Архивировано из первоисточника 19 октября 2012].

Отрывок, характеризующий Tkinter

– Да, – отвечала Вера, – я совсем этого не желаю. Надо жить для общества.
– Точно такая была на княгине Юсуповой, – сказал Берг, с счастливой и доброй улыбкой, указывая на пелеринку.
В это время доложили о приезде графа Безухого. Оба супруга переглянулись самодовольной улыбкой, каждый себе приписывая честь этого посещения.
«Вот что значит уметь делать знакомства, подумал Берг, вот что значит уметь держать себя!»
– Только пожалуйста, когда я занимаю гостей, – сказала Вера, – ты не перебивай меня, потому что я знаю чем занять каждого, и в каком обществе что надо говорить.
Берг тоже улыбнулся.
– Нельзя же: иногда с мужчинами мужской разговор должен быть, – сказал он.
Пьер был принят в новенькой гостиной, в которой нигде сесть нельзя было, не нарушив симметрии, чистоты и порядка, и потому весьма понятно было и не странно, что Берг великодушно предлагал разрушить симметрию кресла, или дивана для дорогого гостя, и видимо находясь сам в этом отношении в болезненной нерешительности, предложил решение этого вопроса выбору гостя. Пьер расстроил симметрию, подвинув себе стул, и тотчас же Берг и Вера начали вечер, перебивая один другого и занимая гостя.
Вера, решив в своем уме, что Пьера надо занимать разговором о французском посольстве, тотчас же начала этот разговор. Берг, решив, что надобен и мужской разговор, перебил речь жены, затрогивая вопрос о войне с Австриею и невольно с общего разговора соскочил на личные соображения о тех предложениях, которые ему были деланы для участия в австрийском походе, и о тех причинах, почему он не принял их. Несмотря на то, что разговор был очень нескладный, и что Вера сердилась за вмешательство мужского элемента, оба супруга с удовольствием чувствовали, что, несмотря на то, что был только один гость, вечер был начат очень хорошо, и что вечер был, как две капли воды похож на всякий другой вечер с разговорами, чаем и зажженными свечами.
Вскоре приехал Борис, старый товарищ Берга. Он с некоторым оттенком превосходства и покровительства обращался с Бергом и Верой. За Борисом приехала дама с полковником, потом сам генерал, потом Ростовы, и вечер уже совершенно, несомненно стал похож на все вечера. Берг с Верой не могли удерживать радостной улыбки при виде этого движения по гостиной, при звуке этого бессвязного говора, шуршанья платьев и поклонов. Всё было, как и у всех, особенно похож был генерал, похваливший квартиру, потрепавший по плечу Берга, и с отеческим самоуправством распорядившийся постановкой бостонного стола. Генерал подсел к графу Илье Андреичу, как к самому знатному из гостей после себя. Старички с старичками, молодые с молодыми, хозяйка у чайного стола, на котором были точно такие же печенья в серебряной корзинке, какие были у Паниных на вечере, всё было совершенно так же, как у других.


Пьер, как один из почетнейших гостей, должен был сесть в бостон с Ильей Андреичем, генералом и полковником. Пьеру за бостонным столом пришлось сидеть против Наташи и странная перемена, происшедшая в ней со дня бала, поразила его. Наташа была молчалива, и не только не была так хороша, как она была на бале, но она была бы дурна, ежели бы она не имела такого кроткого и равнодушного ко всему вида.
«Что с ней?» подумал Пьер, взглянув на нее. Она сидела подле сестры у чайного стола и неохотно, не глядя на него, отвечала что то подсевшему к ней Борису. Отходив целую масть и забрав к удовольствию своего партнера пять взяток, Пьер, слышавший говор приветствий и звук чьих то шагов, вошедших в комнату во время сбора взяток, опять взглянул на нее.
«Что с ней сделалось?» еще удивленнее сказал он сам себе.
Князь Андрей с бережливо нежным выражением стоял перед нею и говорил ей что то. Она, подняв голову, разрумянившись и видимо стараясь удержать порывистое дыхание, смотрела на него. И яркий свет какого то внутреннего, прежде потушенного огня, опять горел в ней. Она вся преобразилась. Из дурной опять сделалась такою же, какою она была на бале.
Князь Андрей подошел к Пьеру и Пьер заметил новое, молодое выражение и в лице своего друга.
Пьер несколько раз пересаживался во время игры, то спиной, то лицом к Наташе, и во всё продолжение 6 ти роберов делал наблюдения над ней и своим другом.
«Что то очень важное происходит между ними», думал Пьер, и радостное и вместе горькое чувство заставляло его волноваться и забывать об игре.
После 6 ти роберов генерал встал, сказав, что эдак невозможно играть, и Пьер получил свободу. Наташа в одной стороне говорила с Соней и Борисом, Вера о чем то с тонкой улыбкой говорила с князем Андреем. Пьер подошел к своему другу и спросив не тайна ли то, что говорится, сел подле них. Вера, заметив внимание князя Андрея к Наташе, нашла, что на вечере, на настоящем вечере, необходимо нужно, чтобы были тонкие намеки на чувства, и улучив время, когда князь Андрей был один, начала с ним разговор о чувствах вообще и о своей сестре. Ей нужно было с таким умным (каким она считала князя Андрея) гостем приложить к делу свое дипломатическое искусство.
Когда Пьер подошел к ним, он заметил, что Вера находилась в самодовольном увлечении разговора, князь Андрей (что с ним редко бывало) казался смущен.
– Как вы полагаете? – с тонкой улыбкой говорила Вера. – Вы, князь, так проницательны и так понимаете сразу характер людей. Что вы думаете о Натали, может ли она быть постоянна в своих привязанностях, может ли она так, как другие женщины (Вера разумела себя), один раз полюбить человека и навсегда остаться ему верною? Это я считаю настоящею любовью. Как вы думаете, князь?