itclvars
Имя
itclvars — переменные, используемые [incr Tcl]Описание
Следующие глобальные переменные создаются и управляются автоматически библиотекой [incr Tcl]. За исключением случаев, указанных ниже, эти переменные обычно должны рассматриваться как только для чтения для кода и пользователей, относящихся к конкретному применению.- itcl::library
- При создании интерпретатора [incr Tcl] инициализирует эту переменную, чтобы содержать имя каталога, содержащего системную библиотеку скриптов [incr Tcl]. Начальное значение itcl::library устанавливается из переменной окружения ITCL_LIBRARY, если она существует, или из вкомпилированного значения в противном случае.
- itcl::patchLevel
- При создании интерпретатора [incr Tcl] инициализирует эту переменную, чтобы содержать текущий уровень исправлений для [incr Tcl]. Например, значение «2.0p1» указывает версию [incr Tcl] 2.0 с применённым первым набором исправлений.
- itcl::purist
- При создании интерпретатора, содержащего Tcl/Tk и механизм именования пространства имён [incr Tcl], эта переменная управляет режимом «обратной совместимости» для доступа к виджетам.
В стандартном Tcl/Tk существует один пул команд, поэтому команда доступа к виджету такая же, как и имя окна. Однако, когда виджет создаётся в пространстве имён, его команда доступа устанавливается в этом пространстве имён и должна обращаться извне пространства имён с помощью квалифицированного имени. Например,
namespace foo { namespace bar { button .b -text "Testing" } } foo::bar::.b configure -background red pack .bОбратите внимание, что имя окна «.b» всё ещё используется в сочетании с командами, такими как pack и destroy. Однако команда доступа к виджету (то есть имя, которое появляется в качестве первого аргумента в строке команд) должна быть более специфичной.
Команда «winfo command» может быть использована для запроса полностью квалифицированной команды доступа к любому виджету, поэтому можно написать:
[winfo command .b] configure -background red
и это хорошая практика при написании процедур библиотеки. Также в сочетании с командой bind поле «%q» может быть использовано вместо «%W» в качестве команды доступа:
bind Button <Key-Return> {%q flash; %q invoke}Хотя такое поведение имеет смысл с точки зрения инкапсуляции, оно создаёт проблемы для существующих приложений Tcl/Tk. Многие существующие приложения написаны с привязками, использующими «%W». Многие процедуры библиотеки предполагают, что имя окна является командой доступа.
Переменная itcl::purist управляет режимом обратной совместимости. По умолчанию эта переменная равна «0», и имя окна может использоваться как команда доступа в любом контексте. Всякий раз, когда процедура unknown сталкивается с именем виджета, она просто использует «winfo command», чтобы определить соответствующее имя команды. Если эта переменная установлена в «1», этот режим обратной совместимости отключён. Это обеспечивает лучшую инкапсуляцию, но использование имени окна в качестве команды доступа может привести к ошибкам «недействительная команда».
- itcl::version
- При создании интерпретатора [incr Tcl] инициализирует эту переменную, чтобы содержать номер версии в формате x.y. Изменения в x представляют собой существенные изменения с вероятными несовместимостями, а изменения в y представляют собой небольшие усовершенствования и исправления ошибок, которые сохраняют обратную совместимость.
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/ItclCmd/itclvars.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/ItclCmd/itclvars.htm