Как подкоманды используются в Tcl/Tk?

Читая эту запись в онлайн-справочнике по Tcl/Tk, я наткнулся на этот абзац, где говорится:

Виджет выпадающего списка также поддерживает следующие подкоманды ttk::entry виджета (подробнее см. Ttk::entry(n)):

  • BBOX
  • удалять
  • icursor
  • индекс
  • вставить
  • выбор
  • XView

Я знаю, что в этом случае виджет Combobox частично состоит из виджета Entry, но как именно используются подкоманды?

3 ответа

Решение

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

ttk::combobox .cb
.cb insert 0 "my text"

Очевидный ответ таков: подкоманда pathname? arg...?, то есть вы начинаете вызов с пути к виджету (который является именем команды, которая была сгенерирована при создании виджета), затем подкомандой, затем любыми аргументами.

Однако я не уверен, о чем ты спрашиваешь. Я что-то пропустил?

Подкоманды очень похожи на методы объектной системы; с этими примерами в Tk вы задаете имя объекта (виджета) в качестве одного аргумента, имя метода (подкоманды) в качестве следующего аргумента и любые дополнительные аргументы, которые требуются после этого.

Если вы перейдете по ссылке на этой странице руководства, вы получите точное описание того, как их использовать. Например, он говорит, что подкоманда index точно такая же, как поддерживается виджетом ttk::entry, и переходя на эту страницу, вы видите:

индекс индекса пути
Возвращает числовой индекс, соответствующий индексу.

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

ИНДЕКСЫ

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

число
Указывает символ в виде числового индекса, где 0 соответствует первому символу в строке.

@ число
В этой форме число рассматривается как x-координата в окне записи; символ, охватывающий эту x-координату. Например, " @0 " обозначает самый левый символ в окне.

конец
Указывает символ сразу после последнего в строке записи. Это эквивалентно указанию числового индекса, равного длине строки записи.

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

sel.first
Указывает на первый символ в выборе. Использование этой формы является ошибкой, если выбор не находится в окне ввода.

sel.last
Указывает символ сразу после последнего в выборе. Использование этой формы является ошибкой, если выбор не находится в окне ввода.

Сокращения могут использоваться для любой из вышеперечисленных форм, например, " e " или " sel.l ". В общем, индексы вне диапазона автоматически округляются до ближайшего допустимого значения.

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

Другие вопросы по тегам