pythoner.name - 25.1. tkinter - интерфейс Python к Tcl/Tk









Search Preview

25.1. tkinter - интерфейс Python к Tcl/Tk | Python

pythoner.name
Пакет tkinter ("Tk interface") - это стандартный интерфейс Python к набору инструментов Tk GUI. Оба - Tk и tkinter - доступны на большинстве Unix-платформ, так же как в системах Windows. (Tk сам по себе не является часть Python; он поддерживается ActiveState.) Выполнение python -m tkinter из командной строки должно открыть окно, демонстрирующее простой интерфейс Tk и давая вам знать, что tkinter правильно установлен в вашей системе, также будет показана установленная версия Tcl/Tk, так что вы будете знать, какую версию документацию Tcl/Tk читать.
.name > pythoner.name

SEO audit: Content analysis

Language Error! No language localisation is found.
Title 25.1. tkinter - интерфейс Python к Tcl/Tk | Python
Text / HTML ratio 68 %
Frame Excellent! The website does not use iFrame solutions.
Flash Excellent! The website does not have any flash contents.
Keywords cloud в и Tk для как к с Python не tkinter или виджет = Tkinter на что fred быть опции виджета
Keywords consistency
Keyword Content Title Description Headings
в 99
и 76
Tk 68
для 58
как 43
к 38
Headings
H1 H2 H3 H4 H5 H6
1 10 13 0 0 0
Images We found 2 images on this web page.

SEO Keywords (Single)

Keyword Occurrence Density
в 99 4.95 %
и 76 3.80 %
Tk 68 3.40 %
для 58 2.90 %
как 43 2.15 %
к 38 1.90 %
с 36 1.80 %
Python 32 1.60 %
не 29 1.45 %
tkinter 29 1.45 %
или 24 1.20 %
виджет 23 1.15 %
= 23 1.15 %
Tkinter 23 1.15 %
на 21 1.05 %
что 21 1.05 %
fred 21 1.05 %
быть 21 1.05 %
опции 19 0.95 %
виджета 17 0.85 %

SEO Keywords (Two Word)

Keyword Occurrence Density
может быть 9 0.45 %
fred = 9 0.45 %
в Tk 8 0.40 %
Tk и 6 0.30 %
могут быть 6 0.30 %
Python к 5 0.25 %
в виджете 5 0.25 %
верхнего уровня 5 0.25 %
на Python 5 0.25 %
в пикселях 4 0.20 %
Допустимые значения 4 0.20 %
=====> fred 4 0.20 %
в tkinter 4 0.20 %
от класса 4 0.20 %
import tkinter 4 0.20 %
Джона Оустерхаута 4 0.20 %
В Tkinter 4 0.20 %
интерфейс Python 4 0.20 %
вы можете 4 0.20 %
в виде 4 0.20 %

SEO Keywords (Three Word)

Keyword Occurrence Density Possible Spam
=====> fred = 4 0.20 % No
интерфейс Python к 4 0.20 % No
__init__self master=None super__init__master 3 0.15 % No
Python к TclTk 3 0.15 % No
25 Графические пользовательские 3 0.15 % No
Графические пользовательские интерфейсы 3 0.15 % No
пользовательские интерфейсы с 3 0.15 % No
интерфейсы с Tk 3 0.15 % No
251 tkinter интерфейс 3 0.15 % No
tkinter интерфейс Python 3 0.15 % No
def __init__self master=None 3 0.15 % No
master=None super__init__master selfpack 3 0.15 % No
и т д 3 0.15 % No
Программирование на Python 3 0.15 % No
Tk 251 tkinter 2 0.10 % No
по языку Python 2 0.10 % No
Справка по языку 2 0.10 % No
стороны подчиненного виджета 2 0.10 % No
бы выразили это 2 0.10 % No
вы бы выразили 2 0.10 % No

SEO Keywords (Four Word)

Keyword Occurrence Density Possible Spam
25 Графические пользовательские интерфейсы 3 0.15 % No
интерфейс Python к TclTk 3 0.15 % No
tkinter интерфейс Python к 3 0.15 % No
251 tkinter интерфейс Python 3 0.15 % No
Графические пользовательские интерфейсы с 3 0.15 % No
__init__self master=None super__init__master selfpack 3 0.15 % No
def __init__self master=None super__init__master 3 0.15 % No
пользовательские интерфейсы с Tk 3 0.15 % No
с каждой стороны подчиненного 2 0.10 % No
интерфейсы с Tk 251 2 0.10 % No
опции для поиска в 2 0.10 % No
с Tk 251 tkinter 2 0.10 % No
=====> fred = Buttonpanel 2 0.10 % No
Краткий обзор стандартной библиотеки 2 0.10 % No
Tk Поле события в 2 0.10 % No
Поле события в tkinter 2 0.10 % No
Tk 251 tkinter интерфейс 2 0.10 % No
button fred fg red 2 0.10 % No
Справка по языку Python 2 0.10 % No
для поиска в базе 2 0.10 % No

Internal links in - pythoner.name

Перевод документации
Перевод документации Python 3.x
Учебник
Учебник Python - документация Python 3.x
1. Разжигая ваш аппетит
Особенности и преимущества Python - документация Python 3.х
2. Использование интерпретатора Python
Использование интерпретатора Python - документация Python 3.x
3. Неформальное введение в Python
Введение в Python - документация Python 3.x
4. Управление потоком выполнения
Управление потоком выполнения - документация Python 3.x
5. Структуры данных
Структуры данных - документация Python 3.х
6. Модули
Модули - документация Python 3.х
7. Ввод и вывод
Ввод и вывод - документация Python 3.х
8. Ошибки и исключения
Ошибки и исключения - документация Python 3.x
9. Классы
Классы - документация Python 3.x
10. Краткий обзор стандартной библиотеки
Краткий обзор стандартной библиотеки - документация Python 3.x
11. Краткий обзор стандартной библиотеки - Часть II
Краткий обзор стандартной библиотеки - Часть II - документация Python 3.x
12. Виртуальное окружение и пакеты
Виртуальное окружение и пакеты - Документация Python 3.x
13. Что теперь?
Ресурсы по Python - документация Python 3.x
14. Tab-завершение и прокрутка истории
Редактирование интерактивного ввода и подстановка истории - документация Python 3.x
15. Проблемы представления вещественных чисел
Проблемы арифметики чисел с плавающей точкой - документация Python 3.x
16. Дополнение
Исполняемые скрипты и настройка модулей - документация Python 3.x
Стандартная библиотека
Стандартная библиотека Python | Python
1. Введение
Введение в стандартную библиотеку - документация Python 3.x
2. Встроенные функции
Встроенные функции - документация Python 3.х
3. Встроенные константы
Встроенные константы - документация Python 3.x
4. Встроенные типы
Встроенные типы - документация Python 3.x
25. Графические пользовательские интерфейсы с Tk
25. Графические пользовательские интерфейсы с Tk | Python
25.1. tkinter - интерфейс Python к Tcl/Tk
25.1. tkinter - интерфейс Python к Tcl/Tk | Python
Справка по языку Python
Справка по языку Python - Документация Python 3.x
1. Введение
Введение - Справка по языку Python 3.x
2. Лексический анализ
Лексический анализ - Справка по языку Python 3.x
Заметки
Заметки | Python
Программы
Программы | Python
Задачи
Python. Решение задач
Курсы
Курсы по программированию на Python
Программа-скрипт для замены части текста во всех файлах каталога
Программа-скрипт для замены части текста во всех файлах каталога | Python
Найти значение списка, которое встречается чаще всего
Найти значение списка, которое встречается чаще всего | Python
Замена элементов списка
Замена элементов списка | Python
Проверка расширения файла
Проверка расширения файла | Python
Вычисление массы, объема и плотности
Вычисление массы, объема и плотности | Python
Цельсии в Фаренгейты или наоборот
Цельсии в Фаренгейты или наоборот | Python
Контакт
Контакт | Программирование на Python

Pythoner.name Spined HTML


25.1. tkinter - интерфейс Python к Tcl/Tk | Python Перейти к основному содержанию Программирование на Python Перевод документацииУчебник1. Разжигая ваш аппетит2. Использование интерпретатора Python3. Неформальное введение в Python4. Управление потоком выполнения5. Структуры данных6. Модули7. Ввод и вывод8. Ошибки и исключения9. Классы10. Краткий обзор стандартной библиотеки11. Краткий обзор стандартной библиотеки - Часть II12. Виртуальное окружение и пакеты13. Что теперь?14. Tab-завершение и прокрутка истории15. Проблемы представления вещественных чисел16. ДополнениеСтандартная библиотека1. Введение2. Встроенные функции3. Встроенные константы4. Встроенные типы25. Графические пользовательские интерфейсы с Tk25.1. tkinter - интерфейс Python к Tcl/TkСправка по языку Python1. Введение2. Лексический анализЗаметкиПрограммыЗадачиКурсы Breadcrumbs You are here: Перевод документации Python 3.xСтандартная библиотека Python25. Графические пользовательские интерфейсы с Tk 25.1. tkinter - интерфейс Python к Tcl/Tk Пакет tkinter ("Tk interface") - это стандартный интерфейс Python к набору инструментов Tk GUI. Оба - Tk и tkinter - доступны на большинстве Unix-платформ, так же как в системах Windows. (Tk сам по себе не является часть Python; он поддерживается ActiveState.) Выполнение python -m tkinter из командной строки должно открыть окно, демонстрирующее простой интерфейс Tk и давая вам знать, что tkinter правильно установлен в вашей системе, также будет показана установленная версия Tcl/Tk, так что вы будете знать, какую версию документацию Tcl/Tk читать. Смотрите также: Документация Tkinter: Ресурсы Python Tkinter (wiki.python.org/moin/TkInter) Гид темы Python Tkinter предоставляет множество информации по использованию Tk из Python и ссылки на другие информационные ресурсы по Tk. TKDocs (www.tkdocs.com/) Обширный учебный материал плюс дружественные страницы для некоторых виджет. Справочник Tkinter: GUI для Python (infohost.nmt.edu/tcc/help/pubs/tkinter/web/index.html) Онлайн справочный материал. Документация Tkinter с effbot (effbot.org/tkinterbook/) Онлайн справка по tkinter, поддерживаемая effbot.org. Программирование на Python (learning-python.com/about-pp4e.html) Книга Марка Лутца, включает превосходное освещение Tkinter. Современный Tkinter для занятых разработчиков Python (www.amazon.com/Modern-Tkinter-Python-Developers-ebook/dp/B0071QDNLO/) Книга Марка Розермана о создании привлекательного и современного графического интерфейса пользователя с помощью Python и Tkinter. Программирование на Python и Tkinter (www.manning.com/books/python-and-tkinter-programming) Книга Джона Грэйсона (ISBN 1-884777-81-3). Документация по Tcl/Tk: Команды Tk (https://www.tcl.tk/man/tcl8.6/TkCmd/contents.htm) Большинство команд доступны как классы tkinter или tkinter.ttk. Измените '8.6' на версию Tcl/Tk, которая у вас установлена. Свежие man-страницы по Tcl/Tk (www.tcl.tk/doc/) Последние мануалы по Tcl/Tk на www.tcl.tk. Домашняя страница Tcl на ActiveState (tcl.activestate.com/) Развитие Tk/Tcl в основном происходит в ActiveState. Набор инструментов Tcl и Tk (www.amazon.com/exec/obidos/ASIN/020163337X) Книга Джона Оустерхаута, изобретателя Tcl. Практическое программирование в Tcl и Tk (www.beedub.com/book/) Энциклопедическая книга Брента Велча. 25.1.1. Модули Tkinter В большинстве случаев tkinter - это все, что вам нужно. Однако также доступен ряд дополнительных модулей. Интерфейс Tk находится в бинарном модуле под именем _tkinter. Этот модуль содержит низкоуровневый интерфейс к Tk, и его не следует никогда использовать напрямую программистами приложений. Обычно это разделяемая библиотека (или DLL), но может в некоторых случаях быть статически связанной с интерпретатором Python. В добавление к тому, что tkinter является модулем интерфейса к Tk, он включает ряд модулей Python, среди которых самым важным является tkinter.constants. Импорт tkinter автоматически импортирует tkinter.constants, так что для того, чтобы использовать Tkinter, все, что вам нужно, - простое выражение импорта: import tkinter Или более часто: from tkinter import * matriculation tkinter.Tk(screenName=None, baseName=None, className='Tk', useTk=1) Класс Tk создается без аргументов. Он создает верхнеуровневый виджет Tk, который обычно является главным окном приложения. У каждого экземпляра есть его собственный связанный с ним интерпретатор Tcl. tkinter.Tcl(screenName=None, baseName=None, className='Tk', useTk=0) Функция Tcl() является функцией-фабрикой, которая создает объект во многом подобный тому, который создается классом Tk, за исключением того, что он не инициализирует подсистему Tk. В большинстве случаев это полезно при управлении интерпретатором Tcl в среде, где вы не хотите создавать внешние окна верхнего уровня, или где это невозможно (например, системы Unix/Linux без X-сервера). Объект, созданный объектом Tcl(), может иметь верхнеуровневое окно, созданное (и подсистема Tk инициализирована) вызовом его метода loadtk(). Другие модули, которые предоставляют поддержку Tk, включают: tkinter.scrolledtext Текстовый виджет со встроенным вертикальным скроллером. tkinter.colorchooser Диалог, позволяющий пользователю выбирать цвет. tkinter.commondialog Здесь перечислены базовые классы для диалоговых окон, определенных в других модулях. tkinter.filedialog Общие диалоги, позволяющие пользователю указать файл для открытия или сохранения. tkinter.font Утилиты, помогающие работать со шрифтами. tkinter.messagebox Доступ к стандартным диалоговым боксам Tk. tkinter.simpledialog Функции базовых диалогов и удобств. tkinter.dnd Поддержка drag-and-drop для tkinter. Он экспериментальный и должен стать устаревшим, когда будет заменен на Tk DND. turtle Черепашья графика в окне Tk. 25.1.2. Спасательный круг Tkinter Этот раздел не создан, чтобы быть исчерпывающим руководством ни по Tk, ни по Tkinter. Скорее он предназначен как промежуточная остановка, обеспечивающая некоторую вводную ориентацию по системе. Заслуги: Tk был написан Джоном Оустерхаутом пока он работал в Беркли. Tkinter был написан Стином Люмхольтом и Гвидо ван Россумом. Этот Спасательный Круг был написан Мэтом Конвеем в университете Вирджиния. HTML-рендеринг и некоторое вольное редактирование были сделаны из версии FrameMaker Кеном Макхеймером. Фредрик Лунд разработал и пересмотрел описания интерфейса класса, чтобы получить их текущие с Tk 4.2. Марк Кларксон преобразовал эту документацию в LaTex, и скомпилировал главу "Интерфейс пользователя" справочного руководства. 25.1.2.1. Как пользоваться этим разделом Этот раздел состоит из двух частей: первая часть (приблизительно) касается материала заднего плана, в то время как вторая половина может быть взята на клавиатуру в качестве удобной справки. Когда вы пытаетесь ответить на вопросы типа "как мне сделать эту чепуху", часто лучше узнать, как сделать "чепуху" непосредственно в Tk, и затем конвертировать это назад в соответствующий вызов tkinter. Программисты на Python часто могут угадать соответствующую команду Python, просматривая документацию Tk. Это означает, что для использования Tkinter вам нужно будет немного узнать о Tk. Этот документ не может выполнить эту роль, поэтому лучшее, что мы можем сделать, - это указать вам лучшую имеющуюся в наличии документацию. Вот некоторые подсказки: Авторы настоятельно рекомендуют получить копию справочных страниц Tk. В частности, страницы man в каталоге manN наиболее полезны. Справочные страницы man3 описывают интерфейс C для библиотеки Tk и, следовательно, не особенно полезны для писателей скриптов. Addison-Wesley публикует книгу "Tcl and the Tk Toolkit" Джона Оустерхаута (ISBN 0-201-63337-X). Она хороша для новичков для знакомства с Tcl и Tk. Книга не является исчерпывающей и за многими деталями отсылает к man-страницам. tkinter/__init__.py - последнее прибежище для большинства, но может быть хорошим местом прийти сюда, когда ничего больше не имеет смыла. 25.1.2.2. Простая программа "Hello World" import tkinter as tk matriculation Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.pack() self.create_widgets() def create_widgets(self): self.hi_there = tk.Button(self) self.hi_there["text"] = "Hello World\n(click me)" self.hi_there["command"] = self.say_hi self.hi_there.pack(side="top") self.quit = tk.Button(self, text="QUIT", fg="red", command=root.destroy) self.quit.pack(side="bottom") def say_hi(self): print("hi there, everyone!") root = tk.Tk() app = Application(master=root) app.mainloop() 25.1.3. (Очень) быстрый взгляд на Tcl/Tk Иерархия классов выглядит сложной, но в реальной практике прикладные программисты почти всегда ссылаются на классы в самом низу иерархии. Примечания: Эти классы предоставляются с целью организации определенных функций в одно пространство имен. Они не должны вызываться независимо. Класс Tk должен вызываться только единожды в приложении. Прикладные программисты не обязаны делать это явно, система создает его всякий раз, когда создается какой-либо из других классов. Класс Widget не предназначен для создания экземпляра, он предназначен только для подклассификации для создания "реальных" виджетов (в C++ это называется "абстрактный класс"). Чтобы использовать этот справочный материал, будут моменты, когда вам нужно будет знать, как читать короткие фрагменты Tk и как идентифицировать различные части команды Tk. (Смотрите раздел "Отображение базовых Tk в Tkinter" для эквивалентов tkinter). Скрипты Tk есть программы Tcl. Подобно всем программам Tcl, скрипты Tk - это просто списки токенов, разделенных пробелами. Виджет Tk есть просто его класс, опции (options) - то, что помогает настраивать его, и действия (actions) - то, что превращает его в полезную вещь. Чтобы создать виджет в Tk, команда всегда имеет форму: classCommand newPathname options classCommand обозначает, какой вид виджета создать (кнопку, метку, меню ...) newPathname есть новое имя этого виджета. Все имена в Tk должны быть уникальными. Чтобы обеспечить соблюдение этого, виджеты в Tk именуются с паснеймами (pathnames), подобно файлам в файловой системе. Виджет верхнего уровня, root, вызывается . (точкой), а дочерние разделяются большим количеством точек. Например, именем виджета может быть .myApp.controlPanel.okButton. options конфигурируют внешний вид виджета и в некоторых классах - его поведение. Опции представлены в виде списка флагов и значений. Флагам предшествует '-', подобно флагам командной оболочки Unix, значения помещаются в кавычки, если они состоят более чем из одного слова. Например: sawed-off .fred -fg red -text "hi there" ^ ^ \______________________/ | | | matriculation new options writ widget (-opt val -opt val ...) Однажды созданный, pathname к виджету становится новой командой. Эта новая виджетная команда есть ручка управления программиста для получения этого виджета для выполнения некоторого действия. В C вы бы выразили это как someAction(fred, someOptions), в C++ вы бы выразили это как fred.someAction(someOptions), а в Tk вы скажете: .fred someAction someOptions Заметьте, что имя объекта, .fred, начинается с точки. Как вы и ожидаете, правильное значение для someAction будет зависеть от класса виджета: .fred disable работает, если fred - кнопка (fred становится серым), но не работает, если fred является меткой (отключение меток не поддерживается в Tk). Допустимое значение для someOptions зависит от действия. Некоторые действия, такие как disable, не требуют аргументов, другим, таким как команда delete бокса текстового поля, понадобятся аргументы для указания, какой диапазон текста удалять. 25.1.4. Отображение базового Tk в Tkinter Команды классов в Tk соответствуют конструкторам классов в Tkinter. sawed-off .fred =====> fred = Button() Хозяин объекта скрыт в новом имени, данном ему в момент создания. В Tkinter родитель указывается явно. sawed-off .panel.fred =====> fred = Button(panel) В Tk конфигурационные опции задаются в виде списка разделенных дефисом тегов, за которыми следуют значения. В Tkinter опции указываются как ключевые слова-аргументы в конструкторе экземпляра, и ключевые слова-аргументы для конфигурационных вызовов или как индексы экземпляров, в стиле словаря, для установленных экземпляров. Смотрите раздел "Установка опций". sawed-off .fred -fg red =====> fred = Button(panel, fg="red") .fred configure -fg red =====> fred["fg"] = red OR ==> fred.config(fg="red") В Tk, чтобы применить действие к виджету, используют имя виджета как команду, после чего следует имя действия, возможно с аргументами (опциями). В Tkinter вы вызываете методы к экземпляру класса, чтобы привязать действие у виджету. Действия (методы), которые данный виджет может выполнить, перечислены в tkinter/__init__.py. .fred invoke =====> fred.invoke() Чтобы передать виджет упаковщику (менеджеру геометрии), вы вызываете его с опциональными аргументами. В Tkinter всю эту функциональность содержит класс Pack, и различные формы упаковочных команд реализованы как методы. Все виджеты в tkinter являются подклассами от Packer, также наследуют все упаковочные методы. Смотрите документацию модуля tkinter.tix для дополнительной информации по формам геометрического менеджера. pack .fred -side left =====> fred.pack(side="left") 25.1.5. Как связаны Tk и Tkinter Сверху вниз: Ваше приложение здесь (Python) Приложение Python создает вызовы tkinter. tkinter (пакет Питона) Этот вызов (скажем, например, создании виджета кнопки) реализован в пакете tkinter, который написан на Python. Эта функция Python будет разбирать (парсить) команды и аргументы и конвертировать их в форму, которая сделает их выглядящими так, как если бы они поступили из скрипта Tk, а не скрипта Python.  _tkinter (C) Эти команды и их аргументы будут парситься к C-функциям в _tkinter - заметьте нижнее подчеркивание - модуль расширения. Tk Widgets (C и Tcl) Эта C-функция способна делать вызовы других C-модулей, включая C-функции, которые составляют библиотеку Tk. Tk реализован на C и немного Tcl. Tcl-часть виджет Tk используется для привязывания определенных поведений по-умолчанию к виджетам и выполняется однажды в месте, где импортируется пакет Питона tkinter. (Пользователи никогда не видят этот этап). Tk (C) Tk-часть виджет Tk реализует финальное отображение к ... Xlib (C) к библиотеке Xlib, чтобы нарисовать графику на экране. 25.1.6. Подручный справочник 25.1.6.1. Настройка опций Опции (параметры) контролируют такие вещи как цвет и ширина границы виджет. Опции могут быть установлены тремя способами: Во время создания объекта, используя аргументы с ключевым словом fred = Button(self, fg="red", bg="blue") После создания объекта, обращаясь к имени опции как к индексу словаря fred["fg"] = "red" fred["bg"] = "blue" Использовать метод config() для обновления нескольких атрибутов после создания объекта fred.config(fg="red", bg="blue") Для полного разъяснения определенной опции и ее поведения, смотрите man-страницы Tk для виджетов, о которых идет речь. Заметьте, что man-страницы перечисляют "СТАНДАРТНЫЕ ОПЦИИ" и "ВИДЖЕТ-СПЕЦИФИЧНЫЕ ОПЦИИ"  для каждого виджета. Первый - список обычных опций для большинства виджет, второй - опции, которые уникальны для конкретного виджета. Стандартные опции документированы в options(3) man-страниц. В этом документе не делается различия между стандартными и виджет-специфичными опциями. Некоторые опции неприменимы к некоторым видам виджет. Отвечает ли данный виджет конкретному параметру, зависит от класса виджета; кнопки имеют опцию command, а метки - нет. Опции, поддерживаемые определенным виджетом, перечислены в его man-страницах или могут быть запрошены во время выполнения, вызовом метода config() без аргументов, или применением метода keys() к виджету. Возвращаемое значение этих вызовов есть словарь, чьи ключи - это имена опций в виде строк (например, 'relief') и чьи значения - 5-кортеж. Некоторые опции, такие как bg, являются синонимами для обычных опций с длинными именами (bg - сокращение для "background"). Передача методу config() сокращенной опции вернет 2-кортеж, а не пятичленный. Этот возвращенный кортеж будет содержать имя синонима и "реальную" опцию (например, ('bg', 'background')). Индекс Значение Пример 0 имя опции 'relief' 1 имя опции для поиска в базе данных 'relief' 2 класс опции для поиска в базе данных 'Relief' 3 значение по умолчанию 'raised' 4 текущее значение 'groove' Пример: >>> print(fred.config()) {'relief': ('relief', 'relief', 'Relief', 'raised', 'groove')} Конечно, выведенных словарь будет включать все доступные опции и их значения. Это предназначено только как пример. 25.1.6.2. Упаковщик Упаковщик - это один из механизмов управления геометрией в Tk. Менеджеры геометрии используются для указания относительного позиционирования виджет внутри их контейнера - их общего мастера (master). В противоположность более громоздкому плэйсеру (placer) (который используется менее часто, и мы не станем освещать его здесь), упаковщик берет в расчет качественное указание отношений - выше, слева, заполнение и т. д. - и все это позволяет определить точные координаты места размещения для вас. Размеры любого виджета-мастера определяются размерами "подчиненных виджетов" внутри него. Упаковщик используется для контроля, где подчиненные виджеты появятся внутри мастера, в который они упакованы. Вы можете паковать виджеты во фреймы, а фреймы - в другие фреймы, чтобы получить тот вид макета, который вы разработали. Заметьте, что виджеты не появляются до тех пор, пока у них не появилась их геометрия, заданная менеджером геометрии. Это обычная ошибка на первых порах оставить без геометрической спецификации, и затем удивиться, когда виджет создан, но ничего не появилось. Виджет появится только после того, как к нему будет применен, например, метод упаковщика pack(). Метод pack() может вызываться с парами опция(ключевое слово)/значение, которые контролируют, где появится виджет в его контейнере, и как он будет себя вести, когда главное окно приложения будет изменено в размерах. Вот некоторые примеры: fred.pack() # по-умолчанию side = "top" fred.pack(side="left") fred.pack(expand=1) 25.1.6.3. Опции упаковщика Для более обширной информации по упаковщику и опциям, которые он может принимать, смотрите man-страницы и страницу 183 книги Джона Оустерхаута. vise Тип якоря. Определяет, где упаковщик должен разместить каждый подчиненный элемент в его участке. expand Булево значение, 0 или 1. fill Допустимые значения: 'x', 'y', 'both', 'none'. ipadx и ipady Расстояние, обозначающее внутренний отступ с каждой стороны подчиненного виджета. padx и pady Расстояние, обозначающее внешний отступ с каждой стороны подчиненного виджета. side Допустимые значения: 'left', 'right', 'top', 'bottom'. 25.1.6.4. Связывающие переменные виджетов Установка текущего значения некоторых виджетов (таких как текстовое поле) могут быть напрямую соединены с переменными приложения с помощью специальных опций. Таковыми опциями являются variable, textvariable, onvalue, offvalue и value. Это соединение работает в обоих направлениях: если переменная изменяется по любой причине, соединенный с ней виджет будет обновлен, чтобы отразить новое значение. К сожалению, в текущей реализации tkinter невозможно передать произвольную переменную Python виджету через опции variable или textvariable. Единственные виды переменных, для которых это работает, - переменные, являющиеся подклассами от класса под названием Variable, который определен в tkinter. Есть множество уже определенных полезных подклассов Variable: StringVar, IntVar, DoubleVar и BooleanVar. Чтобы прочитать текущее значение такой переменной, вызовите метод get() для них, а чтобы изменить значение, вызовите метод set(). Если вы следуете этому протоколу, виджеты всегда будут отслеживать значение переменной без дальнейшего вмешательства с вашей стороны. Например: matriculation App(Frame): def __init__(self, master=None): super().__init__(master) self.pack() self.entrythingy = Entry() self.entrythingy.pack() # здесь переменная приложения self.contents = StringVar() # установка ее в определенное значение self.contents.set("this is a variable") # указание виджету поля смотреть за этой переменной self.entrythingy["textvariable"] = self.contents # здесь получаем обратный вызов при нажатии клавиши. # получим вывод значения переменной приложения self.entrythingy.bind('<Key-Return>', self.print_contents) def print_contents(self, event): print("hi. contents of entry is now ---->", self.contents.get()) 25.1.6.5. Оконный менеджер В Tk есть полезная команда wm для взаимодействия с оконным менеджером. Опции команды wm позволяют вам контролировать такие вещи как заголовки, размещение, иконки и тому подобное. В tkinter эти команды реализованы как методы класса Wm. Виджет верхнего уровня является подклассом от класса Wm и таким образом может вызывать методы Wm напрямую. Чтобы обратиться к верхеуровневому окну, которое содержит данный виджет, вы можете часто просто ссылаться к мастеру виджета. Конечно, если виджет был упакован внутри фрейма, мастер не будет представлять окно верхнего уровня. Для обращения к окну верхнего уровня, которое включает произвольный виджет, вы можете вызвать метод _root(). Этот метод начинается с подчеркивания, чтобы обозначить тот факт, что эта функция является частью реализации, а не интерфейсом к функциональности Tk. Здесь несколько примеров типичного использования: import tkinter as tk matriculation App(tk.Frame): def __init__(self, master=None): super().__init__(master) self.pack() # создание приложения myapp = App() # # здесь вызовы методов для класса оконного менеджера # myapp.master.title("My Do-Nothing Application") myapp.master.maxsize(1000, 400) # запуск программы myapp.mainloop() 25.1.6.6. Типы данных опций Tk vise Допустимые значения точек компаса: "n", "ne", "e", "se", "s", "sw", "w", "nw", а также "center". bitmap Есть восемь встроенных именованных побитовых изображений: 'error', 'gray25', 'gray50', 'hourglass', 'info', 'questhead', 'question', 'warning'. Чтобы указать имя файла bitmap, задайте полный путь к файлу, предшествуя его @, как в "@/usr/contrib/bitmap/gumby.bit". boolean Вы можете передать целые числа 0 или 1 или строки "yes" и "no". callback Это любая функция Python, которая не принимает аргументы. Например: def print_it(): print("hi there") fred["command"] = print_it verisimilitude Цвета могут быть заданы как имена X цветов в файле rgb.txt или как строки, представляющие RGB значения в 4 бит: "#RGB", 8 бит: "#RRGGBB", 12 бит: "#RRRGGGBBB" или 16 бит: "#RRRRGGGGBBBB" диапазонах, где R, G, B здесь представляют любую допустимую шестрадцатеричную цифру. Смотрите страницу 160 книги Оустерхаута для деталей. cursor Могут быть использованы стандартные имена X курсора из cursorfont.h, без префикса XC_. Например, чтобы получить курсор в виде руки (XC_hand2), используйте строку "hand2". Вы также можете указать ваш собственный файл bitmap или маску. Смотрите страницу 179 книги Оустерхаута. loftiness Экранное расстояние может быть указано либо в пикселях, либо в абсолютных расстояниях. Пиксели задаются как числа, абсолютные расстояния - как строки с завершающим символом, обозначающим единицы: c для сантиметров, i для дюймов, m для миллиметров, p в точках печати. Например, 3.5 дюймов выражаются как "3.5i". font Tk использует списковый формат имен шрифтов, такой как {courier 10 bold}. Размеры с положительными числами измеряются в точках; размеры с отрицательными числами измеряются в пикселях. geometry Это строка вида widthxheight, где ширина и высота для большинства виджет измеряются в пикселях (или в символах для виджетов, отображающих текст). Например: fred["geometry"] = "200x100". justify Допустимыми значениями являются строки: "left", "center", "right" и "fill". region Это строка с четырьмя разделенными пробелами элементами, каждый из которых есть допустимое расстояние (см. выше). Например: "2 3 4 5" и "3i 2i 4.5i 2i" и "3c 2c 4c 10.43c" и все допустимые области. relief Определяет стиль границ виджет. Допустимые значения: "raised", "sunken", "flat", "groove" и "ridge". scrollcommand Это почти всегда метод set() какого-либо виджета с полосой прокрутки, но может быть любым методом виджета, который принимает одиночный аргумент. wrap Должен быть одним из: "none", "char" или "word". 25.1.6.7. Связи и события Метод tighten из команды виджета позволяет вам отслеживать конкретное событие и иметь триггер callback-функции, когда данный тип события происходит. Форма метода bind: def bind(self, sequence, func, add=''): где: sequence строка, определяющая определенный вид события. (Смотрите man-страницы по tighten и страницу 201 книги Джона Оустерхаута для деталей). func функция Python, принимающая один аргумент, вызывается, когда событие происходит. Экземпляр события должен быть передан как аргумент. (Функции, развернутые таким образом, обычно известны как обратные вызовы.) add опционально, либо '', либо '+'. Передача пустой строки обозначает, что эта связь есть замена любых других связей, с которыми было ассоциировано данное событие. Передача '+' обозначает, что эта функция добавляется к списку функций, связанных с этим типом события. Например: def turn_red(self, event): event.widget["activeforeground"] = "red" self.button.bind("<Enter>", self.turn_red) Обратите внимание, как к полю widget события обращаются в обратном вызове turn_red(). Это поле содержит виджет, который поймал событие X. Нижеследующий список в таблице - другие поля события, к которым вы можете получить доступ, и как они определены в Tk, что может быть полезно при обращении к man-страницам Tk.  Tk Поле события в tkinter Tk Поле события в tkinter %f focus %A char %h height %E send_event %k keycode %K keysym %s state %N keysym_num %t time %T type %w width %W widget %x x %X x_root %y y %Y y_root 25.1.6.8. Параметр alphabetize Ряд виджетов требуют, чтобы был переданы параметры "index". Они используются для указания конкретного места в виджете Text или конкретных символов в виджете Entry или конкретного элемента меню в виджете Menu.  Индексы виджета Entry (index, view alphabetize и т. д.) У виджет Entry есть опции, которые ссылаются к позиции символа в отображаемом тексте. Вы можете использовать эти функции tkinter для доступа к этим специальным точкам в текстовых виджетах: Индексы виджета Text Обозначение индексов в виджете Text весьма обширно и лучше описано в man-страницах Tk. Индексы Menu (menu.invoke(), menu.entryconfig() и т. д.) Некоторые опции и методы меню управляют определенными записями в меню. Индекс меню всегда необходим для опции или параметра, вы можете передавать: целое число, которое ссылается к числовой позиции записи в виджете, отсчитывая сверху, начиная с 0; строка "active", которая отсылает к позиции меню, которая в текущий момент находится под курсором; строка "last", которая ссылается к последнему пункту меню; целое число, которому предшествует @, как в @6, где целое число интерпретируется как координата y в пикселях в координатной системе меню; строка "none", которая вообще не указывает на запись меню, наиболее часто используется с menu.activate(), чтобы деактивировать все записи, и наконец, текстовая строка, представляющая собой шаблон, который сопоставляется метке элемента меню, который проверяется с верха меню к низу. Отметьте, что этот тип индекса рассматривается после всех других, что означает, что совпадения для пунктов меню, обозначенных last, zippy или none, могут быть интерпретированы как вышеперечисленные литералы. 25.1.6.9. Изображения Изображения различных форматов могут быть созданы посредством соответствующих подклассов tkinter.Image: BitmapImage для изображений в формате XBM. PhotoImage для картинок в форматах PGM, PPM, GIF и PNG. Последний поддерживается, начиная с Tk 8.6. Любой тип картинки создается либо через file, либо через опцию data (другие опции также доступны). Объект изображения может быть затем использован где-либо в опции image, поддерживаемой некоторыми виджетами (например, метками, кнопками, меню). В этих случаях Tk не сохраняет ссылку на картинку. Когда удаляется последняя ссылка Python к картинке, объект image удаляется, данные изображения удаляются также, и Tk отобразит пустой бокс в том месте, где использовался image. См. также: Пакет Pillow добавляет поддержку для таких форматов как BMP, JPEG, TIFF и WebP среди прочего. 25.1.7. Обработчики файлов Tk позволяет вам регистрировать и отменять регистрацию функций обратного вызова, которые будут вызываться из цикла обработки Tk, когда возможен ввод/вывод на файловый дескриптор. Только один обработчик может быть зарегистрирован на файловый дескриптор. Пример кода: import tkinter widget = tkinter.Tk() mask = tkinter.READABLE | tkinter.WRITABLE widget.tk.createfilehandler(file, mask, callback) ... widget.tk.deletefilehandler(file) Эта возможность недоступна на Windows. Поскольку вы не знаете, как много байт доступно для чтения, возможно вам захочется использовать BufferedIOBase или TextIOBase read() или readline() методы, поскольку они будут настаивать на чтении предопределенного количества байтов. Для сокетов будут прекрасно работать методы recv() и recvfrom(); для других файлов используйте необработанное чтение или os.read(file.fileno(), maxbytecount). Widget.tk.createfilehandler(file, mask, func) Регистрирует файловый обработчик функции обратного вызова func. Аргумент file может быть либо объектом с методом fileno() (как у объектов файлов или сокетов), либо целочисленным дескриптором файлов. Аргумент mask является комбинацией ORed любых из трех констант ниже. Callback вызывается так: callback(file, mask) Widget.tk.deletefilehandler(file) Отменяет регистрацию файлового обработчика. tkinter.READABLE tkinter.WRITABLE tkinter.EXCEPTION Константы, используемые в аргументе mask. Создано2018-05-07 Добавить комментарий Перекрёстные ссылки книги для 25.1. tkinter - интерфейс Python к Tcl/Tk 25. Графические пользовательские интерфейсы с Tk Вверх Справка по языку Python Footer menu Контакт