wish
-
НАЗВАНИЕ
- wish — Простая оболочка с окнами
- СИНТАКСИС
- ПАРАМЕТРЫ
-
argc
- argv
- argv0
- geometry
- tcl_interactive
- argv
Имя
wish — Простая оболочка с окнамиСинтаксис
wish ?-encoding имя? ?имяФайла аргумент аргумент ...?Параметры
Описание
Wish — это простая программа, состоящая из языка команд Tcl, инструментария Tk и главной программы, которая считывает команды со стандартного ввода или из файла. Она создаёт главное окно и затем обрабатывает команды Tcl. Если wish вызывается с аргументами, то первые несколько аргументов, ?-encoding имя? ?имяФайла?, указывают имя файла скрипта и, необязательно, кодировку текстовых данных, хранящихся в этом файле скрипта. Значение для имяФайла распознаётся, если соответствующий аргумент не начинается с «-».Если нет аргументов или аргументы не указывают имяФайла, то wish считывает команды Tcl интерактивно со стандартного ввода. Она будет продолжать обработку команд до тех пор, пока не будут удалены все окна или пока не будет достигнут конец файла на стандартном вводе. Если существует файл «.wishrc» в домашней директории пользователя, wish оценивает файл как скрипт Tcl непосредственно перед чтением первой команды со стандартного ввода.
Если аргументы wish указывают имяФайла, то имяФайла рассматривается как имя файла скрипта. Wish выполнит скрипт в имяФайла (который, предположительно, создаёт пользовательский интерфейс), затем будет реагировать на события до тех пор, пока все окна не будут удалены. Команды не будут считываться со стандартного ввода. Автоматической оценки «.wishrc» при указании имени файла скрипта в командной строке wish нет, но файл скрипта всегда может использовать source, если это необходимо.
Обратите внимание, что в Windows программа wishверсия.exe отличается от программы tclshверсия.exe ещё и тем, что она не подключается к стандартной консоли Windows, а является оконной программой. Из-за этого она также предоставляет доступ к своей собственной команде console.
Обработка параметров
Wish автоматически обрабатывает все параметры командной строки, описанные в разделе ПАРАМЕТРЫ выше. Любые другие аргументы командной строки передаются приложению с помощью переменных argc и argv, описанных ниже.Имя и класс приложения
Имя приложения, используемое для таких целей, как команды send, берётся из параметра -name, если он указан; иначе — из имяФайла, если он указан, или из имени команды, по которой вызван wish. В последних двух случаях, если имя содержит символ «/», то используются только символы после последнего слэша в качестве имени приложения.Класс приложения, который используется для задания параметров с помощью свойства RESOURCE_MANAGER или файла .Xdefaults, такой же, как его имя, за исключением того, что первая буква заглавная.
Переменные
Wish устанавливает следующие переменные Tcl:- argc
- Содержит количество аргументов arg (0, если нет), не считая параметров, описанных выше.
- argv
- Содержит список Tcl, элементы которого — аргументы arg, следующие за параметром -- или не соответствующие ни одному из параметров, описанных в ПАРАМЕТРЫ выше, в порядке следования, или пустая строка, если таких аргументов нет.
- argv0
- Содержит имяФайла, если оно было указано. В противном случае — имя, по которому был вызван wish.
- geometry
- Если указан параметр -geometry, wish копирует его значение в эту переменную. Если переменная всё ещё существует после обработки имяФайла, wish использует значение переменной в команде wm geometry для задания геометрии главного окна.
- tcl_interactive
- Содержит 1, если wish считывает команды интерактивно (имяФайла не было указано и стандартный ввод является терминальным устройством), 0 в противном случае.
Файлы сценариев
Если вы создаёте сценарий Tcl в файле, первая строка которого#!/usr/local/bin/wish, то вы можете вызвать файл сценария непосредственно из вашей оболочки, если отметьте его как исполняемый. Это предполагает, что wish установлен по умолчанию в /usr/local/bin; если он установлен в другом месте, вам придётся изменить вышеуказанную строку, чтобы она соответствовала этому. Многие UNIX-системы не позволяют строке #! превышать примерно 30 символов, поэтому убедитесь, что исполняемый файл wish может быть вызван с коротким именем файла.
Ещё лучший подход — начать ваши файлы сценариев со следующих трёх строк:
#!/bin/sh
# the next line restarts using wish \
exec wish "$0" ${1+"$@"} Этот подход имеет три преимущества по сравнению с подходом в предыдущем абзаце. Во-первых, расположение двоичного файла wish не нужно жёстко задавать в скрипте: он может быть где угодно в вашем пути поиска оболочки. Во-вторых, он обходит ограничение длины имени файла в 30 символов в предыдущем подходе. В-третьих, этот подход будет работать даже если wish сам является скриптом оболочки (это делается на некоторых системах для обработки нескольких архитектур или операционных систем: скрипт wish выбирает один из нескольких двоичных файлов для запуска). Три строки обрабатываются как sh, так и wish, но оператор exec выполняется только sh. sh обрабатывает скрипт в первую очередь; он рассматривает вторую строку как комментарий и выполняет третью строку. Оператор exec заставляет оболочку прекратить обработку и вместо этого запустить wish для повторной обработки всего скрипта. Когда wish запускается, он обрабатывает все три строки как комментарии, так как обратный слэш в конце второй строки заставляет третью строку рассматриваться как часть комментария ко второй строке. Конец файла сценария может быть отмечен либо физическим концом носителя, либо символом «\032» («\u001a», Control-Z). Если этот символ присутствует в файле, приложение wish будет читать текст до, но не включая, этот символ. Приложение, которому требуется этот символ в файле, может закодировать его как «\032», «\x1a» или «\u001a»; или может сгенерировать его с помощью команд, таких как format или binary.
Подсказки
Когда wish вызывается интерактивно, он обычно предлагает ввод для каждой команды с помощью «% ». Вы можете изменить подсказку, изменив переменные tcl_prompt1 и tcl_prompt2. Если переменная tcl_prompt1 существует, она должна содержать скрипт Tcl для вывода подсказки; вместо вывода подсказки, wish выполнит скрипт в tcl_prompt1. Переменная tcl_prompt2 используется аналогичным образом, когда нажата клавиша Enter, но текущая команда ещё не завершена; если переменная tcl_prompt2 не установлена, то для незавершенных команд подсказка не выводится.См. также
tclsh, главное окно, Tk_Main, Tk_MainLoop, Tk_MainWindow
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/UserCmd/wish.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/UserCmd/wish.htm