loadTk
Имя
safe::loadTk — Загрузка Tk в безопасный интерпретатор.Синтаксис
safe::loadTk slave ?-use windowId? ?-display displayName?Описание
Безопасный Tk основан на Безопасном Tcl, который предоставляет механизм, позволяющий ограниченный и опосредованный доступ к автозагрузке и пакетам для безопасных интерпретаторов. Безопасный Tk добавляет возможность настройки интерпретатора для безопасных операций Tk и загрузки Tk в безопасные интерпретаторы.Команда safe::loadTk инициализирует необходимые структуры данных в указанном безопасном интерпретаторе и затем загружает Tk в него. Интерпретатор должен быть создан с помощью safe::interpCreate или инициализирован с помощью safe::interpInit. Команда возвращает имя безопасного интерпретатора. Если указан параметр -use, для окна, идентифицируемого указанным системно-зависимым идентификатором windowId, используется окно “.” безопасного интерпретатора; это может быть любой допустимый идентификатор, потенциально ссылающийся на окно, принадлежащее другому приложению. Для удобства, если окно, которое вы планируете использовать, является окном Tk приложения, вы можете использовать имя окна (например, «.x.y») вместо его идентификатора окна (например, из winfo id .x.y). Если -use не указан, для окна “.” безопасного интерпретатора создаётся новое окно верхнего уровня. В X11, если вы хотите, чтобы встраиваемое окно использовало другой дисплей, отличного от стандартного, укажите его с помощью -display. Подробности реализации см. в разделе ВОПРОСЫ БЕЗОПАСНОСТИ ниже.
Вопросы безопасности
Пожалуйста, ознакомьтесь со страницей справки safe для Tcl, чтобы узнать о базовых соображениях безопасности для Безопасного Tcl.safe::loadTk добавляет значение tk_library, взятое из главного интерпретатора, в виртуальный путь доступа безопасного интерпретатора, чтобы автозагрузка работала в безопасном интерпретаторе.
Инициализация Tk теперь безопасна относительно недоверия к состоянию раба на этапе запуска. safe::loadTk регистрирует имя раба, поэтому когда вызывается инициализация Tk (Tk_SafeInit) и, в свою очередь, вызывается safe::InitTk главного интерпретатора, он вернёт желаемый эквивалент argv (-use windowId, правильный -display и т.д.).
Если -use не используется, создаваемое новое окно верхнего уровня специально оформляется, чтобы пользователь всегда понимал, что представленный интерфейс пользователя может исходить от потенциально небезопасного кода, и мог легко удалить соответствующий интерпретатор.
В X11, конфликтующие значения -use и -display, вероятно, приведут к фатальной ошибке X.
См. также
safe, interp, library, load, package, source, unknown безопасный интерпретатор,
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/loadTk.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/loadTk.htm