Ниже определены методы для всех виджетов. В описаниях w может быть любым виджетом любого типа.
w.after(delay_ms, callback=None, *args)
Запрашивает Tkinter вызвать функцию
callbackс аргументамиargsпосле задержки не менееdelay_msмиллисекунд. Нет верхнего предела того, сколько времени это займет на самом деле, но ваш обратный вызов не будет вызван раньше, чем вы запросите, и он будет вызван только один раз.
Этот метод возвращает целое число (идентификатор after), которое можно передать методу
.after_cancel(), если вы хотите отменить обратный вызов.
Если вы не передали аргумент
callback, этот метод ожидаетdelay_msмиллисекунд, как в функции.sleep()из стандартного модуля Python time.
w.after_cancel(id)
Отменяет запрос на обратный вызов, установленный ранее
.after(). Аргументid- это результат, возвращенный исходным вызовом.after().
w.after_idle(func, *args)
Запрашивает, чтобы Tkinter вызвал функцию
funcс аргументамиargsв следующий раз, когда система будет простаивать, то есть когда не будет событий для обработки. Обратный вызов будет вызван только один раз. Если вы хотите, чтобы ваш обратный вызов был вызван еще раз, вы должны снова вызвать метод.after_idle.
w.bell()
Издает звук, обычно похожий на гудок.
w.bind(sequence=None, func=None, add=None)
Этот метод используется для привязки события к виджету. Обзор привязок событий см. в Раздел 54, "События".
Аргумент
sequenceописывает, какое событие мы ожидаем, а аргументfunc- это функция, которая будет вызвана, когда это событие произойдет с виджетом. Если для данного виджета уже была привязка для этого события, то обычно старый обратный вызов заменяется наfunc, но вы можете сохранить оба обратных вызова, передавadd='+'.
w.bind_all(sequence=None, func=None, add=None)
Аналогично
.bind(), но применяется ко всем виджетам во всем приложении.
w.bind_class(className, sequence=None, func=None, add=None)
Аналогично
.bind(), но применяется ко всем виджетам с именемclassName(например,'Button').
w.bindtags(tagList=None)
Если вы вызовете этот метод, он вернет "теги привязки" для виджета в виде последовательности строк. Тег привязки - это имя окна (начинающееся с
'.') или имя класса (например,'Listbox').
Вы можете изменить порядок вызова уровней привязки, передав в качестве аргумента последовательность тегов привязки, которую вы хотите, чтобы использовал виджет.
Обсуждение уровней привязки и их связи с тегами см. в Раздел 54, "События".
w.cget(option)
Возвращает текущее значение
optionв виде строки. Вы также можете получить значение опции для виджетаwв видеw[option].
w.clipboard_append(text)
Добавляет заданную строку
textв буфер обмена дисплея, где хранятся вырезанные и вставленные строки для всех приложений этого дисплея.
w.clipboard_clear()
Очищает буфер обмена дисплея (см.
.clipboard_append()выше).
w.column_configure()
См. раздел Раздел 4.2, "Другие методы управления сеткой".
w.config(option=value, ...)
Аналогично
w.configure()(см. ниже).
w.configure(option=value, ...)
Устанавливает значения одной или нескольких опций. Для опций, имена которых являются зарезервированными словами Python (
class,from,in), используйте нижнее подчеркивание:'class_','from_','in_'.
Вы также можете установить значение опции для виджета
wс помощью оператора
w[option] = value
Если вы вызовете метод
.config()для виджета без аргументов, вы получите словарь всех текущих опций виджета. Ключи - это имена опций (включая псевдонимы, напримерbdдляborderwidth). Значение каждого ключа:
- для большинства записей - кортеж из пяти элементов: (имя опции, ключ базы данных опций, класс базы данных опций, значение по умолчанию, текущее значение); или,
- для имен псевдонимов (например,
'fg') - два кортежа: (имя псевдонима, эквивалентное стандартное имя).
w.destroy()
Вызов
w.destroy()на виджетеwуничтожаетwи все его дочерние элементы.
w.event_add(virtual, *sequences)
Этот метод создает виртуальное событие, имя которого задается строковым аргументом
virtual. Каждый дополнительный аргумент описывает одну последовательность sequence, то есть описание физического события. Когда это событие происходит, запускается новое виртуальное событие.
Общее описание виртуальных событий см. в Раздел 54, "События".
w.event_delete(virtual, *sequences)
Удаляет физические события из виртуального события, имя которого задано строкой
virtual. Если из данного виртуального события удалены все физические события, то это виртуальное событие больше не произойдет.
w.event_generate(sequence, **kw)
Этот метод вызывает событие без какого-либо внешнего стимула. Обработка события происходит так же, как если бы оно было вызвано внешним стимулом. Аргумент
sequenceописывает событие, которое должно быть вызвано. Вы можете задать значения для выбранных полей объектаEvent, предоставив аргументыkeyword`=value, гдеkeywordуказывает имя поля в объектеEvent.
Полное обсуждение событий см. в Раздел 54, "События".
Если вы вызовете этот метод без аргумента, то получите в ответ последовательность всех определенных в данный момент имен виртуальных событий.
Чтобы получить физические события, связанные с виртуальным событием, передайте этому методу имя виртуального события, и вы получите последовательность физических имен
sequence, илиNone, если данное виртуальное событие никогда не было определено.
w.focus_displayof()
Возвращает имя окна, которое в данный момент имеет фокус ввода на том же дисплее, что и виджет. Если ни одно из таких окон не имеет фокуса ввода, возвращается
None.
Общее описание фокуса ввода см. в Раздел 53, "Фокус: маршрутизация ввода с клавиатуры".
w.focus_force()
Принудительное перемещение фокуса ввода на виджет. Это невежливо. Лучше подождать, пока оконный менеджер передаст вам фокус. См. также
.grab_set_global()ниже.
w.focus_get()
Возвращает виджет, имеющий фокус в данном приложении, если таковой имеется - в противном случае возвращается
None.
w.focus_lastfor()
Этот метод извлекает имя виджета, который последним имел фокус ввода в окне верхнего уровня, содержащем
w. Если ни один из виджетов этого верхнего уровня никогда не имел фокуса ввода, то возвращается имя виджета верхнего уровня. Если у этого приложения нет фокуса ввода,.focus_lastfor()вернет имя виджета, который получит фокус в следующий раз, когда вернется к этому приложению.
w.focus_set()
Если приложение
wимеет фокус ввода, то фокус перейдет кw. Если приложениеwне имеет фокуса, Tk вспомнит, что нужно передать егоwв следующий раз, когда приложение получит фокус.
w.grab_current()
Если для дисплея
wдействует захват (grab), возвращает его идентификатор, в противном случае возвращаетNone. Обсуждение захватов см. в Раздел 54, "События".
w.grab_release()
Если в
wдействует захват, освободить его.
w.grab_set()
Виджет
wзахватывает все события для приложенияw. Если действовал другой захват, он исчезает. Обсуждение захватов см. в Раздел 54, "События".
w.grab_set_global()
Виджет
wзахватывает все события для всего экрана. Это считается невежливым и должно использоваться только в случае крайней необходимости. Любой другой захват в силе. Постарайтесь использовать эту потрясающую силу только для сил добра и никогда для сил зла, хорошо?
w.grab_status()
Если действует локальный захват (заданный командой
.grab_set()), этот метод возвращает строку'local'. Если действует глобальный захват (установленный с помощью.grab_set_global()), то возвращается строка'global'. Если захват не действует, возвращаетсяNone.
w.grid_forget()
См. раздел Раздел 4.2, "Другие методы управления сеткой".
w.grid_propagate()
См. раздел Раздел 4.2, "Другие методы управления сеткой".
w.grid_remove()
См. раздел Раздел 4.2, "Другие методы управления сеткой".
w.image_names()
Возвращает имена всех изображений в приложении
wв виде последовательности строк.
w.keys()
Возвращает имена опций для виджета в виде последовательности строк.
w.lift(aboveThis=None)
Если аргумент равен
None, то окно, содержащееw, перемещается в верхнюю часть стека окон. Чтобы переместить окно непосредственно над некоторымToplevelокномw, передайтеwв качестве аргумента.
w.lower(belowThis=None)
Если аргумент равен
None, окно, содержащееw, перемещается в самый низ порядка стекания окон. Чтобы переместить окно чуть ниже некоторогоToplevelокнаw, передайтеwв качестве аргумента.
w.mainloop()
Этот метод должен быть вызван, как правило, после создания всех статических виджетов, чтобы начать обработку событий. Вы можете выйти из главного цикла с помощью метода
.quit()(см. ниже). Вы также можете вызвать этот метод внутри обработчика событий, чтобы возобновить работу главного цикла.
w.nametowidget(name)
Этот метод возвращает актуальный виджет, чье имя пути равно
name. Смотрите Раздел 5.11, "Имена окон". Еслиnameнеизвестно, этот метод вызоветKeyError.
w.option_add(pattern, value, priority=None)
Этот метод добавляет значения опций по умолчанию в базу данных опций Tkinter. Шаблон
pattern- это строка, задающая значение по умолчанию для опций одного или нескольких виджетов. Значенияpriorityявляются одними из:
20 Для глобальных свойств виджетов по умолчанию. 40 Для свойств по умолчанию конкретных приложений. 60 Для опций, полученных из пользовательских файлов, таких как файл .Xdefaults.80 Для параметров, которые устанавливаются после запуска приложения. Это уровень приоритета по умолчанию.
Приоритеты более высокого уровня имеют приоритет над приоритетами более низкого уровня. Обзор базы данных опций см. в Раздел 27, "Стандартизация внешнего вида". Синтаксис аргумента
patternдля.option_add()такой же, как и уoption-patternв строке спецификации ресурса.
Например, чтобы получить эффект от этой строки спецификации ресурса:
\*Button\*font: times 24 bold
ваше приложение (в данном примере
self) может включить следующие строки:
self.bigFont = tkFont.Font(family='times', size=24, weight='bold') self.option\_add('\*Button\*font', self.bigFont)
Любые виджеты
Button, созданные после выполнения этих строк, по умолчанию будут использовать полужирный шрифт Times 24 (если не переопределить опциюfontв конструктореButton).
w.option_clear()
Этот метод удаляет все опции из базы данных опций Tkinter. В результате все опции возвращаются к значениям по умолчанию.
w.option_get(name, classname)
Этот метод используется для получения текущего значения опции из базы данных опций Tkinter. Первым аргументом является ключ экземпляра, а вторым - ключ класса. Если есть совпадения, возвращается значение опции, которая лучше всего подходит. Если совпадений нет, возвращается
''.
Подробнее о том, как ключи сопоставляются с опциями, см. в Раздел 27, "Стандартизация внешнего вида".
w.option_readfile(fileName, priority=None)
Для удобства пользовательской конфигурации вы можете назначить именованный файл, в который пользователи могут поместить свои предпочтительные опции, используя тот же формат, что и в файле
.Xdefaults. Затем, когда ваше приложение инициализируется, вы можете передать имя этого файла в этот метод, и опции из этого файла будут добавлены в базу данных. Если файл не существует или его формат неверен, этот метод вызовет ошибкуtk.TclError.
См. раздел Раздел 27, "Стандартизация внешнего вида" для ознакомления с базой данных опций и форматом файлов опций.
w.register(function)
Этот метод создает Tcl-обертку вокруг функции Python и возвращает имя Tcl-обертки в виде строки. Пример использования этого метода приведен в Раздел 10.2, "Добавление валидации в виджет Entry".
w.quit()
Этот метод завершает работу главного цикла. Обсуждение главного цикла см. в разделе
.mainloop(), выше.
w.rowconfigure()
См. раздел Раздел 4.2, "Другие методы управления сеткой".
w.selection_clear()
Если в данный момент в
wесть выделение (например, выделенный фрагмент текста в виджете ввода), снимите это выделение.
w.selection_get()
Если в данный момент в
wесть выделение, этот метод возвращает выделенный текст. Если выделения нет, то возникает ошибкаtk.TclError.
w.selection_own()
Делает
wвладельцем выделения в отображенииw, забирая его у предыдущего владельца, если таковой имеется.
w.selection_own_get()
Возвращает виджет, которому в данный момент принадлежит выделение на экране
w. Вызываетtk.TclError, если такого выделения не существует.
w.tk_focusFollowsMouse()
Обычно фокус ввода проходит через последовательность виджетов, определяемую их иерархией и порядком создания; смотрите Раздел 53, "Фокус: маршрутизация ввода с клавиатуры". Вместо этого вы можете указать Tkinter, что фокус будет находиться там, где находится мышь; просто вызовите этот метод. Однако нет простого способа отменить это.
w.tk_focusNext()
Возвращает виджет, следующий за
wв последовательности обхода фокуса. Обсуждение обхода фокуса см. в Раздел 53, "Фокус: маршрутизация ввода с клавиатуры".
w.tk_focusPrev()
Возвращает виджет, который предшествует
wв последовательности обхода фокуса.
w.unbind(sequence, funcid=None)
Этот метод удаляет привязки к
wдля события, описанногоsequence. Если второй аргумент является обратным вызовом, привязанным к этой последовательности, то этот обратный вызов удаляется, а остальные, если они есть, остаются на месте. Если второй аргумент опущен, все привязки удаляются.
Общее обсуждение привязок к событиям см. ниже в Раздел 54, "События".
w.unbind_all(sequence)
Удаляет все привязки событий в приложении для события, описанного заданной 'sequence'.
w.unbind_class(className, sequence)
Аналогично
.unbind(), но применяется ко всем виджетам с именемclassName(например,'Entry'или'Listbox').
w.update()
Этот метод принудительно обновляет дисплей. Его следует использовать только в том случае, если вы знаете, что делаете, поскольку он может привести к непредсказуемому поведению или зацикливанию. Его никогда не следует вызывать из обратного вызова события или функции, которая вызывается из обратного вызова события.
Некоторые задачи обновления дисплея, такие как изменение размеров и перерисовка виджетов, называются idle tasks, потому что они обычно откладываются до тех пор, пока приложение не закончит обработку событий и не вернется в главный цикл для ожидания новых событий.
Если вы хотите заставить дисплей обновляться до того, как приложение перейдет в режим ожидания, вызовите метод
w.update_idletasks()для любого виджета.
w.wait_variable(v)
Ждет, пока значение переменной
vне будет установлено, даже если значение не изменяется. Этот метод входит в локальный цикл ожидания, поэтому он не блокирует работу остальной части приложения.
w.wait_visibility(w)
Подождать, пока виджет
w(обычноToplevel) станет видимым.
w.wait_window(w)
Подождите, пока окно
wне будет уничтожено.
w.winfo_children()
Возвращает список всех дочерних окон
wв порядке их расположения от самого низкого (нижнего) до самого высокого (верхнего).
w.winfo_class()
Возвращает имя класса
w(например,'Button').
w.winfo_containing(rootX, rootY, displayof=0)
Этот метод используется для поиска окна, содержащего точку (
rootX,rootY). Если параметрdisplayofравен false, координаты определяются относительно корневого окна приложения; если true, координаты считаются относительными к окну верхнего уровня, содержащемуw. Если указанная точка находится в одном из окон верхнего уровня приложения, метод возвращает это окно; в противном случае он возвращаетNone.
w.winfo_depth()
Возвращает количество бит на пиксель в отображении
w.
w.winfo_fpixels(number)
Для любой размерности
number(см. Раздел 5.1, "Размеры") этот метод возвращает это расстояние в пикселях на дисплееwв виде числа типаfloat.
w.winfo_geometry()
Возвращает строку геометрии, описывающую размер и расположение
wна экране. Смотрите Раздел 5.10, " Строки геометрии".
Внимание!
Геометрия не является точной до тех пор, пока приложение не обновит свои незадействованные задачи. В частности, все геометрии изначально имеют вид
'1x1+0+0', пока виджеты и менеджер геометрии не согласуют свои размеры и позиции. Как убедиться, что геометрия виджета актуальна, смотрите метод .update_idletasks(), приведенный выше в этом разделе.
w.winfo_height()
Возвращает текущую высоту
wв пикселях. См. замечания по обновлению геометрии в разделе.winfo_geometry(), выше. Вы можете предпочесть использовать.winfo_reqheight(), описанную ниже, которая всегда актуальна.
w.winfo_id()
Возвращает целое число, которое однозначно идентифицирует
wв пределах окна верхнего уровня. Оно понадобится для метода.winfo_pathname(), описанного ниже.
w.winfo_ismapped()
Этот метод возвращает true, если виджет
wотображен, false - в противном случае. Виджет отображается, если он был помещен в сетку (или размещен, или упакован, если вы используете один из других менеджеров геометрии) в своем родителе, и если его родитель отображается, и так далее вплоть до окна верхнего уровня.
w.winfo_manager()
Если
wне было отображено на сетке (или размещено с помощью одного из других менеджеров геометрии), этот метод возвращает пустую строку. Еслиwбыл размещен на сетке или иным образом, то возвращается строка с названием менеджера геометрии дляw: это значение будет одним из'grid','pack','place','canvas'или'text'.
w.winfo_name()
Этот метод возвращает имя
wотносительно его родителя. Смотрите Раздел 5.11, "Имена окон". Также смотрите.winfo_pathname(), ниже, чтобы узнать, как получить имя пути виджета.
w.winfo_parent()
Возвращает имя пути родителя
w, или пустую строку, еслиwявляется окном верхнего уровня. Подробнее об именах путей виджетов см. в Раздел 5.11, "Имена окон" выше.
w.winfo_pathname(id, displayof=0)
Если аргумент
displayofравен false, возвращает имя пути к окну виджета с уникальным идентификаторомidв главном окне приложения. Еслиdisplayofравен true, то номерidуказывает на виджет в том же окне верхнего уровня, что иw. Обсуждение путей к именам виджетов см. в Раздел 5.11, "Имена окон".
w.winfo_pixels(number)
Для любого размера
number(см. раздел "Размеры", выше) этот метод возвращает это расстояние в пикселях на экранеwв виде целого числа.
w.winfo_pointerx()
Возвращает то же значение, что и координата
x, возвращаемая методом.winfo_pointerxy().
w.winfo_pointerxy()
Возвращает кортеж
(x, y), содержащий координаты указателя мыши относительно корневого окнаw. Если указатель мыши находится не на том же экране, возвращается(-1, -1).
w.winfo_pointery()
Возвращает то же значение, что и координата
y, возвращаемая функцией.winfo_pointerxy().
w.winfo_reqheight()
Эти методы возвращают запрашиваемую высоту виджета
w. Это минимальная высота, необходимая для того, чтобы все содержимоеwимело необходимое пространство. Фактическая высота может быть другой из-за согласования с менеджером геометрии.
w.winfo_reqwidth()
Возвращает запрашиваемую ширину виджета
w, минимальную ширину, необходимую для размещенияw. Как и в случае с.winfo_reqheight(), фактическая ширина может быть другой из-за согласования с менеджером геометрии.
w.winfo_rgb(color)
Для любого заданного цвета этот метод возвращает эквивалентную спецификацию красно-зелено-синего цвета в виде 3-кортежа
(r, g, b), где каждое число является целым числом в диапазоне [0, 65536). Например, еслиcolor-'green', этот метод возвращает 3-кортеж(0, 65535, 0).
Подробнее о задании цветов см. в Раздел 5.3, "Цвета".
w.winfo_rootx()
Возвращает координаты
xлевой стороны корневого окнаwотносительно родителяw.
Если у
wесть граница, то это внешний край границы.
w.winfo_rooty()
Возвращает координату
yверхней стороны корневого окнаwотносительно родителяw.
Если у
wесть граница, то это верхний край границы.
w.winfo_screenheight()
Возвращает высоту экрана в пикселях.
w.winfo_screenmmheight()
Возвращает высоту экрана в миллиметрах.
w.winfo_screenmmwidth()
Возвращает ширину экрана в миллиметрах.
w.winfo_screenvisual()
Возвращает строку, описывающую метод цветопередачи дисплея. Обычно это
'truecolor'для 16- или 24-битных дисплеев,'pseudocolor'для 256-цветных дисплеев.
w.winfo_screenwidth()
Возвращает ширину экрана в пикселях.
w.winfo_toplevel()
Возвращает окно верхнего уровня, содержащее
w. Это окно поддерживает все методы виджетовToplevel; см. Раздел 25, "Toplevel: методы окон верхнего уровня".
w.winfo_viewable()
Предикат, возвращающий значение
True, еслиwдоступно для просмотра, то есть если оно и все его предки в том жеToplevelотображены.
w.winfo_width()
Возвращает текущую ширину
wв пикселях. См. замечания по обновлению геометрии в разделе.winfo_geometry(), выше. Вы можете предпочесть использовать метод.winfo_reqwidth(), описанный выше; он всегда актуален.
w.winfo_x()
Возвращает координату
xлевой стороныwотносительно его родителя. Если уwесть граница, то это внешний край границы.
w.winfo_y()
Возвращает координату
yверхней стороныwотносительно его родителя. Если уwесть граница, это внешний край границы.