Tcl — Обзор
Tcl — это сокращенная форма Tool Command Language . Джон Оустерхаут из Калифорнийского университета в Беркли разработал его. Это комбинация языка сценариев и его собственного интерпретатора, который внедряется в приложение, которое мы разрабатываем вместе с ним.
Tcl был разработан изначально для Unix. Затем он был портирован на Windows, DOS, OS / 2 и Mac OSX. Tcl очень похож на другие языки оболочки Unix, такие как Bourne Shell (Sh), C Shell (csh), Korn Shell (sh) и Perl.
Он направлен на предоставление возможности программам взаимодействовать с другими программами, а также выступать в качестве встраиваемого переводчика. Несмотря на то, что первоначальной целью было дать возможность программам взаимодействовать, вы можете найти полноценные приложения, написанные на Tcl / Tk.
Особенности Tcl
Особенности Tcl заключаются в следующем —
-
Сокращение времени разработки.
-
Мощный и простой пользовательский интерфейс с интеграцией TK.
-
Пиши один раз, беги куда угодно. Он работает на Windows, Mac OS X и почти на любой платформе Unix.
-
Довольно просто начать работу для опытных программистов; язык настолько прост, что они могут выучить Tcl за несколько часов или дней.
-
Вы можете легко расширить существующие приложения с Tcl. Кроме того, можно включить Tcl в C, C ++ или Java в Tcl или наоборот.
-
Имейте мощный набор сетевых функций.
-
Наконец, это открытый исходный код, бесплатный и может быть использован для коммерческих приложений без каких-либо ограничений.
Сокращение времени разработки.
Мощный и простой пользовательский интерфейс с интеграцией TK.
Пиши один раз, беги куда угодно. Он работает на Windows, Mac OS X и почти на любой платформе Unix.
Довольно просто начать работу для опытных программистов; язык настолько прост, что они могут выучить Tcl за несколько часов или дней.
Вы можете легко расширить существующие приложения с Tcl. Кроме того, можно включить Tcl в C, C ++ или Java в Tcl или наоборот.
Имейте мощный набор сетевых функций.
Наконец, это открытый исходный код, бесплатный и может быть использован для коммерческих приложений без каких-либо ограничений.
Приложения
Tcl — это язык общего назначения, и вы можете найти Tcl везде. Это включает,
- Масштабируемые сайты, которые часто поддерживаются базами данных.
- Высокопроизводительные веб-серверы создаются с помощью TclHttpd.
- Tcl с CGI-сайтами.
- Настольные приложения с графическим интерфейсом.
- Встроенные приложения.
Tcl — настройка среды
Настройка локальной среды
Если вы хотите настроить свою среду для Tcl, вам потребуются следующие два программных приложения, доступные на вашем компьютере:
- Текстовый редактор
- Tcl переводчик.
Текстовый редактор
Это будет использоваться для ввода вашей программы. Примерами нескольких текстовых редакторов являются Блокнот Windows, команда «Редактирование ОС», Brief, Epsilon, EMACS и vim или vi.
Имя и версия текстового редактора могут различаться в разных операционных системах. Например, Блокнот будет использоваться в Windows, а vim или vi могут использоваться в Windows, а также в Linux или UNIX.
Файлы, которые вы создаете в текстовом редакторе, называются исходными файлами и содержат исходный код программы. Исходные файлы для программ Tcl названы с расширением «.tcl» .
Прежде чем приступить к программированию, убедитесь, что у вас есть один текстовый редактор, и у вас достаточно опыта, чтобы написать компьютерную программу, сохранить ее в файле, собрать ее и, наконец, выполнить.
Переводчик Tcl
Это небольшая программа, которая позволяет вам вводить команды Tcl и выполнять их построчно. Он останавливает выполнение файла tcl, в случае, если он сталкивается с ошибкой в отличие от компилятора, который выполняется полностью.
Давайте создадим файл helloWorld.tcl следующим образом. Мы будем использовать это как первую программу, работающую на платформе, которую вы выберете.
#!/usr/bin/tclsh puts "Hello World!"
Установка на Windows
Загрузите последнюю версию для установщика Windows из списка доступных двоичных файлов Active Tcl. Активная версия сообщества Tcl бесплатна для личного использования.
Запустите загруженный исполняемый файл для установки Tcl, что можно сделать, следуя инструкциям на экране.
Теперь мы можем создать и запустить файл Tcl, скажем helloWorld.tcl, переключившись на папку, содержащую файл, с помощью команды ‘cd’, а затем выполнить программу, выполнив следующие шаги
C:\Tcl> tclsh helloWorld.tcl
Мы можем увидеть следующий вывод.
C:\Tcl> helloWorld
C: \ Tcl — папка, которую я использую для сохранения своих образцов. Вы можете изменить его на папку, в которой вы сохранили программы Tcl.
Установка в Linux
Большинство операционных систем Linux поставляются со встроенным Tcl, и вы можете сразу же начать работу с этими системами. В случае, если он недоступен, вы можете использовать следующую команду для загрузки и установки Tcl-Tk.
$ yum install tcl tk
Теперь мы можем создать и запустить файл Tcl, скажем helloWorld.tcl, переключившись на папку, содержащую этот файл, с помощью команды «cd», а затем выполнить программу, выполнив следующие шаги:
$ tclsh helloWorld.tcl
Мы можем увидеть следующий вывод —
$ hello world
Установка в системах на основе Debian
В случае, если это не доступно в вашей ОС, вы можете использовать следующую команду для загрузки и установки Tcl-Tk —
$ sudo apt-get install tcl tk
Теперь мы можем создать и запустить файл Tcl, скажем helloWorld.tcl, переключившись на папку, содержащую этот файл, с помощью команды «cd», а затем выполнить программу, выполнив следующие шаги:
$ tclsh helloWorld.tcl
Мы можем увидеть следующий вывод —
$ hello world
Установка в Mac OS X
Загрузите последнюю версию пакета Mac OS X из списка доступных двоичных файлов Active Tcl. Активная версия сообщества Tcl бесплатна для личного использования.
Запустите загруженный исполняемый файл, чтобы установить Active Tcl, что можно сделать, следуя инструкциям на экране.
Теперь мы можем создать и запустить файл Tcl, скажем helloWorld.tcl, переключившись на папку, содержащую файл, используя «cd», а затем выполнить программу, выполнив следующие шаги:
$ tclsh helloWorld.tcl
Мы можем увидеть следующий вывод —
$ hello world
Установка из исходных файлов
Вы можете использовать опцию установки из исходных файлов, когда двоичный пакет недоступен. Обычно предпочтительно использовать двоичные файлы Tcl для Windows и Mac OS X, поэтому ниже показана только компиляция исходных текстов в системе на основе Unix.
-
Загрузите исходные файлы.
-
Теперь используйте следующие команды для извлечения, компиляции и сборки после переключения в загруженную папку.
Загрузите исходные файлы.
Теперь используйте следующие команды для извлечения, компиляции и сборки после переключения в загруженную папку.
$ tar zxf tcl8.6.1-src.tar.gz $ cd tcl8.6.1 $ cd unix $ ./configure —prefix=/opt —enable-gcc $ make $ sudo make install
Примечание. Убедитесь, что вы изменили имя файла на версию, загруженную по командам 1 и 2, указанным выше.
Tcl — специальные переменные
В Tcl мы классифицируем некоторые переменные как специальные переменные, и они имеют предопределенное использование / функциональность. Список специальных переменных приведен ниже.
Sr.No. | Специальная переменная и описание |
---|---|
1 |
ARGC Относится к ряду аргументов командной строки. |
2 |
ARGV Относится к списку, содержащему аргументы командной строки. |
3 |
argv0 Относится к имени файла интерпретируемого файла или имени, под которым мы вызываем скрипт. |
4 |
окр Используется для представления массива элементов, которые являются переменными среды. |
5 |
код ошибки Предоставляет код ошибки для последней ошибки Tcl. |
6 |
errorInfo Предоставляет трассировку стека для последней ошибки Tcl. |
7 |
tcl_interactive Используется для переключения между интерактивным и неинтерактивным режимами, устанавливая это в 1 и 0 соответственно. |
8 |
tcl_library Используется для настройки расположения стандартных библиотек Tcl. |
9 |
tcl_pkgPath Предоставляет список каталогов, в которых обычно установлены пакеты. |
10 |
tcl_patchLevel Относится к текущему уровню исправления интерпретатора Tcl. |
11 |
tcl_platform Используется для представления массива элементов с объектами, включая byteOrder, machine, osVersion, platform и os. |
12 |
tcl_precision Относится к точности, т. Е. К числу цифр, сохраняемых при преобразовании чисел с плавающей запятой в строки. Значение по умолчанию 12. |
13 |
tcl_prompt1 Относится к первичной подсказке. |
14 |
tcl_prompt2 Относится к дополнительному приглашению с недопустимыми командами. |
15 |
tcl_rcFileName Предоставляет пользовательский файл запуска. |
16 |
tcl_traceCompile Используется для контроля трассировки компиляции байт-кода. Используйте 0 для отсутствия вывода, 1 для сводки и 2 для подробности. |
17 |
tcl_traceExec Используется для контроля отслеживания выполнения байт-кода. Используйте 0 для отсутствия вывода, 1 для сводки и 2 для подробности. |
18 |
tcl_version Возвращает текущую версию интерпретатора Tcl. |
ARGC
Относится к ряду аргументов командной строки.
ARGV
Относится к списку, содержащему аргументы командной строки.
argv0
Относится к имени файла интерпретируемого файла или имени, под которым мы вызываем скрипт.
окр
Используется для представления массива элементов, которые являются переменными среды.
код ошибки
Предоставляет код ошибки для последней ошибки Tcl.
errorInfo
Предоставляет трассировку стека для последней ошибки Tcl.
tcl_interactive
Используется для переключения между интерактивным и неинтерактивным режимами, устанавливая это в 1 и 0 соответственно.
tcl_library
Используется для настройки расположения стандартных библиотек Tcl.
tcl_pkgPath
Предоставляет список каталогов, в которых обычно установлены пакеты.
tcl_patchLevel
Относится к текущему уровню исправления интерпретатора Tcl.
tcl_platform
Используется для представления массива элементов с объектами, включая byteOrder, machine, osVersion, platform и os.
tcl_precision
Относится к точности, т. Е. К числу цифр, сохраняемых при преобразовании чисел с плавающей запятой в строки. Значение по умолчанию 12.
tcl_prompt1
Относится к первичной подсказке.
tcl_prompt2
Относится к дополнительному приглашению с недопустимыми командами.
tcl_rcFileName
Предоставляет пользовательский файл запуска.
tcl_traceCompile
Используется для контроля трассировки компиляции байт-кода. Используйте 0 для отсутствия вывода, 1 для сводки и 2 для подробности.
tcl_traceExec
Используется для контроля отслеживания выполнения байт-кода. Используйте 0 для отсутствия вывода, 1 для сводки и 2 для подробности.
tcl_version
Возвращает текущую версию интерпретатора Tcl.
Указанные выше специальные переменные имеют свои особые значения для интерпретатора Tcl.
Примеры использования специальных переменных Tcl
Давайте посмотрим несколько примеров для специальных переменных.
Версия Tcl
#!/usr/bin/tclsh puts $tcl_version
Когда вы запустите программу, вы получите похожий вывод, как показано ниже —
8.6
Tcl Environment Path
#!/usr/bin/tclsh puts $env(PATH)
Когда вы запустите программу, вы получите похожий вывод, как показано ниже —
/home/cg/root/GNUstep/Tools:/usr/GNUstep/Local/Tools:/usr/GNUstep/ System/Tools:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/webmaster/.local/bin:/ home/webmaster/bin:/usr/local/scriba/bin:/usr/local/smlnj/ bin:/usr/local/bin/std:/usr/local/bin/extra:/usr/local/fantom/bin:/usr/ local/dart/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/opt/mono/ bin:/opt/mono/lib/mono/4.5:/usr/local/bin:.:/usr/libexec/sdcc:/usr/local/ icon-v950/bin:/usr/local/mozart/bin:/opt/Pawn/bin:/opt/jdk1.7.0_75/bin:/ opt/jdk1.7.0_75/jre/bin:/opt/pash/Source/PashConsole/bin/Debug/
Путь к пакету Tcl
#!/usr/bin/tclsh puts $tcl_pkgPath
Когда вы запустите программу, вы получите похожий вывод, как показано ниже —
/usr/lib64/tcl8.6 /usr/share/tcl8.6 /usr/lib64/tk8.6 /usr/share/tk8.6
Библиотека Tcl
#!/usr/bin/tclsh puts $tcl_library
Когда вы запустите программу, вы получите похожий вывод, как показано ниже —
/usr/share/tcl8.6
Уровень Tcl Patch
#!/usr/bin/tclsh puts $tcl_patchLevel
Когда вы запустите программу, вы получите похожий вывод, как показано ниже —
8.6.6
Tcl Precision
#!/usr/bin/tclsh puts $tcl_precision
Когда вы запустите программу, вы получите похожий вывод, как показано ниже —
0
Tcl Startup File
#!/usr/bin/tclsh puts $tcl_rcFileName
Когда вы запустите программу, вы получите похожий вывод, как показано ниже —
~/.tclshrc
Tcl — основной синтаксис
Tcl довольно прост в освоении, и давайте начнем создавать нашу первую программу Tcl!
Первая программа Tcl
Давайте напишем простую программу Tcl. Все файлы Tcl будут иметь расширение, т.е. .tcl. Итак, поместите следующий исходный код в файл test.tcl.
#!/usr/bin/tclsh puts "Hello, World!"
Предполагая, что среда Tcl настроена правильно; давайте запустим программу после переключения в каталог файла и затем запустим программу, используя —
$ tclsh test.tcl
Мы получим следующий вывод —
Hello, World!
Давайте теперь посмотрим на базовую структуру программы Tcl, так что вам будет легко понять основные строительные блоки языка Tcl. В Tcl мы используем новую строку или точку с запятой для завершения предыдущей строки кода. Но точка с запятой не обязательна, если вы используете новую строку для каждой команды.
Комментарии
Комментарии подобны тексту помощи в вашей программе Tcl, и интерпретатор их игнорирует. Комментарии могут быть написаны с использованием знака хэш _ (#) в начале.
#!/usr/bin/tclsh # my first program in Tcl puts "Hello World!"
Когда приведенный выше код выполняется, он дает следующий результат —
Hello World!
Многострочный или блочный комментарий пишется с использованием ‘if’ с условием ‘0’. Пример показан ниже.
#!/usr/bin/tclsh if 0 { my first program in Tcl program Its very simple } puts "Hello World!"
Когда приведенный выше код выполняется, он дает следующий результат —
Hello World!
Использование встроенных комментариев; Пример приведен ниже.
#!/usr/bin/tclsh puts "Hello World!" ;# my first print in Tcl program
Когда приведенный выше код выполняется, он дает следующий результат —
Hello World!
Идентификаторы
Идентификатор Tcl — это имя, используемое для идентификации переменной, функции или любого другого пользовательского элемента. Идентификатор начинается с буквы от A до Z или от a до z или подчеркивания (_), за которым следуют ноль или более букв, подчеркивания, доллары ($) и цифры (от 0 до 9).
Tcl не допускает использование знаков препинания, таких как @ и% в идентификаторах. Tcl является регистрозависимым _ языком. Таким образом, рабочая сила и рабочая сила — два разных идентификатора в Tcl. Вот несколько примеров допустимых идентификаторов:
mohd zara abc move_name a_123 myname50 _temp j a23b9 retVal
Зарезервированные слова
Следующий список показывает несколько зарезервированных слов в Tcl. Эти зарезервированные слова не могут использоваться как константы или переменные или любые другие имена идентификаторов.
после | присоединять | массив | auto_execok |
auto_import | auto_load | auto_load_index | auto_qualify |
двоичный | Bgerror | перерыв | ловить |
CD | Часы | близко | CONCAT |
Продолжить | Dde | дефолт | еще |
ElseIf | кодирование | ВФ | ошибка |
Eval | Exec | выход | выраж |
fblocked | Fconfigure | F КОПИРОВАТЬ | файл |
fileevent | Промывать | за | для каждого |
формат | Получает | шарик | Глобальный |
история | Если | Информация | интерп |
присоединиться | Lappend | LINDEX | шланга вставьте |
список | Llength | нагрузка | lrange |
lreplace | Lsearch | lsort | Пространство имен |
открыть | пакет | ПИД-регулятор | pkg_mkIndex |
процедура | Оферты | PWD | читать |
регулярное выражение | Regsub | переименовать | ресурс |
вернуть | сканирование | искать | задавать |
разъем | Источник | Трещина | строка |
Подст | переключатель | tclLog | сказать |
время | след | неизвестный | снята с охраны |
Обновить | Верхний уровень | upvar | переменная |
VWait | В то время как |
Пробелы в Tcl
Строка, содержащая только пробел, возможно, с комментарием, называется пустой строкой , и интерпретатор Tcl полностью игнорирует ее.
Пробел — это термин, используемый в Tcl для описания пробелов, вкладок, символов новой строки и комментариев. Пробелы отделяют одну часть оператора от другой и позволяют интерпретатору определить, где один элемент в утверждении, например, ставит, заканчивается и начинается следующий элемент. Поэтому в следующем утверждении —
#!/usr/bin/tclsh puts "Hello World!"
Должен быть как минимум один символ пробела (обычно пробел) между «путями» и «Hello World!» чтобы переводчик мог их различить. С другой стороны, в следующем утверждении —
#!/usr/bin/tclsh puts [expr 3 + 2] ;# print sum of the 3 and 2
Когда приведенный выше код выполняется, он дает следующий результат —
5
Никакие пробельные символы не нужны между 3 и + или между + и 2; Тем не менее, вы можете включить некоторые из них, если вы хотите для удобства чтения.
Tcl — Команды
Как вы знаете, Tcl — это язык команд Tool, команды являются наиболее важной частью языка. Команды Tcl встроены в язык, каждая из которых имеет свою предопределенную функцию. Эти команды формируют зарезервированные слова языка и не могут использоваться для именования других переменных. Преимущество этих команд Tcl заключается в том, что вы можете определить собственную реализацию для любой из этих команд, чтобы заменить оригинальные встроенные функции.
Каждая из команд Tcl проверяет ввод, и это уменьшает работу интерпретатора.
Команда Tcl на самом деле представляет собой список слов, причем первое слово представляет команду для выполнения. Следующие слова представляют аргументы. Чтобы сгруппировать слова в один аргумент, мы заключаем несколько слов с помощью «» или {}.
Синтаксис команды Tcl следующий:
commandName argument1 argument2 ... argumentN
Давайте посмотрим на простой пример команды Tcl —
#!/usr/bin/tclsh puts "Hello, world!"
Когда приведенный выше код выполняется, он дает следующий результат —
Hello, world!
В приведенном выше коде «put» — это команда Tcl, а «Hello World» — это аргумент1. Как было сказано ранее, мы использовали «» для группировки двух слов.
Давайте посмотрим еще один пример команды Tcl с двумя аргументами —
#!/usr/bin/tclsh puts stdout "Hello, world!"
Когда приведенный выше код выполняется, он дает следующий результат —
Hello, world!
В вышеприведенном коде «put» — это команда Tcl, «stdout» — это аргумент1, а «Hello World» — аргумент2. Здесь stdout заставляет программу печатать на стандартном устройстве вывода.
Подстановка команд
В подстановках команд квадратные скобки используются для оценки сценариев внутри квадратных скобок. Простой пример добавления двух чисел показан ниже —
#!/usr/bin/tclsh puts [expr 1 + 6 + 9]
Когда приведенный выше код выполняется, он дает следующий результат —
16
Подстановка переменных
В подстановках переменных $ используется перед именем переменной, и это возвращает содержимое переменной. Простой пример установки значения переменной и его вывода показан ниже.
#!/usr/bin/tclsh set a 3 puts $a
Когда приведенный выше код выполняется, он дает следующий результат —
3
Замена обратной косой черты
Они обычно называются escape-последовательностями ; с каждой обратной косой чертой, за которой следует буква, имеющая свое значение. Простой пример замены новой строки показан ниже —
#!/usr/bin/tclsh puts "Hello\nWorld"
Когда приведенный выше код выполняется, он дает следующий результат —
Hello World
Tcl — типы данных
Примитивный тип данных Tcl — строка, и часто мы можем найти кавычки на Tcl как язык только для строк. Эти примитивные типы данных, в свою очередь, создают составные типы данных для списка и ассоциативного массива. В Tcl типы данных могут представлять не только простые объекты Tcl, но также могут представлять сложные объекты, такие как дескрипторы, графические объекты (в основном, виджеты) и каналы ввода-вывода. Давайте посмотрим на детали о каждом из вышеперечисленных.
Простые объекты Tcl
В Tcl, будь то целое число, логическое число, число с плавающей запятой или строка. Когда вы хотите использовать переменную, вы можете напрямую присвоить ей значение, в Tcl нет шага объявления. Могут быть внутренние представления для этих различных типов объектов. При необходимости он может преобразовывать один тип данных в другой. Синтаксис для присвоения значения переменной следующий:
#!/usr/bin/tclsh set myVariable 18 puts $myVariable
Когда приведенный выше код выполняется, он дает следующий результат —
18
Приведенный выше оператор создаст имя переменной myVariable и сохранит ее в виде строки, хотя мы не использовали двойные кавычки. Теперь, если мы попытаемся сделать арифметику для переменной, она автоматически превращается в целое число. Простой пример показан ниже —
#!/usr/bin/tclsh set myVariable 18 puts [expr $myVariable + 6 + 9]
Когда приведенный выше код выполняется, он дает следующий результат —
33
Важно отметить, что эти переменные не имеют никаких значений по умолчанию и должны быть назначены значения перед их использованием.
Если мы пытаемся печатать путями, число преобразуется в правильную строку. Наличие двух представлений, внутреннего и внешнего, помогает Tcl легко создавать сложные структуры данных по сравнению с другими языками. Кроме того, Tcl более эффективен благодаря своей динамической объектной природе.
Строковые представления
В отличие от других языков, в Tcl вам не нужно включать двойные кавычки, когда это всего лишь одно слово. Примером может быть —
#!/usr/bin/tclsh set myVariable hello puts $myVariable
Когда приведенный выше код выполняется, он дает следующий результат —
hello
Когда мы хотим представить несколько строк, мы можем использовать либо двойные кавычки, либо фигурные скобки. Это показано ниже —
#!/usr/bin/tclsh set myVariable "hello world" puts $myVariable set myVariable {hello world} puts $myVariable
Когда приведенный выше код выполняется, он дает следующий результат —
hello world hello world
Список
Список — это не что иное, как группа элементов. Группа слов, использующая двойные кавычки или фигурные скобки, может использоваться для представления простого списка. Простой список показан ниже —
#!/usr/bin/tclsh set myVariable {red green blue} puts [lindex $myVariable 2] set myVariable "red green blue" puts [lindex $myVariable 1]
Когда приведенный выше код выполняется, он дает следующий результат —
blue green
Ассоциативный массив
Ассоциативные массивы имеют индекс (ключ), который не обязательно является целым числом. Обычно это строка, которая действует как пары ключ-значение. Простой пример показан ниже —
#!/usr/bin/tclsh set marks(english) 80 puts $marks(english) set marks(mathematics) 90 puts $marks(mathematics)
Когда приведенный выше код выполняется, он дает следующий результат —
80 90
рукоятки
Дескрипторы Tcl обычно используются для представления файлов и графических объектов. Они могут включать дескрипторы сетевых запросов, а также другие каналы, такие как последовательный порт, сокеты или устройства ввода-вывода. Ниже приведен пример, где создается дескриптор файла.
set myfile [open "filename" r]
Подробнее о файлах вы узнаете в главе « Ввод / вывод файла Tcl» .
Tcl — переменные
В Tcl нет концепции объявления переменных. Как только новое имя переменной встретится, Tcl определит новую переменную.
Именование переменных
Имя переменных может содержать любые символы и длину. Вы даже можете иметь пробелы, заключив переменную в фигурные скобки, но это не является предпочтительным.
Команда set используется для присвоения значения переменной. Синтаксис для команды set:
set variableName value
Несколько примеров переменных показаны ниже —
#!/usr/bin/tclsh set variableA 10 set {variable B} test puts $variableA puts ${variable B}
Когда приведенный выше код выполняется, он дает следующий результат —
10 test
Как вы можете видеть в приведенной выше программе, $ variableName используется для получения значения переменной.
Динамический набор текста
Tcl — это динамически типизированный язык. При необходимости значение переменной может быть динамически преобразовано в требуемый тип. Например, число 5, которое хранится в виде строки, будет преобразовано в число при выполнении арифметической операции. Это показано ниже —
#!/usr/bin/tclsh set variableA "10" puts $variableA set sum [expr $variableA +20]; puts $sum
Когда приведенный выше код выполняется, он дает следующий результат —
10 30
Математические выражения
Как вы можете видеть в приведенном выше примере, expr используется для представления математического выражения. Точность по умолчанию Tcl составляет 12 цифр. Чтобы получить результаты с плавающей запятой, мы должны добавить хотя бы одну десятичную цифру. Простой пример объясняет вышеизложенное.
#!/usr/bin/tclsh set variableA "10" set result [expr $variableA / 9]; puts $result set result [expr $variableA / 9.0]; puts $result set variableA "10.0" set result [expr $variableA / 9]; puts $result
Когда приведенный выше код выполняется, он дает следующий результат —
1 1.1111111111111112 1.1111111111111112
В приведенном выше примере вы можете увидеть три случая. В первом случае, дивиденд и делитель являются целыми числами, и мы получаем целое число в результате. Во втором случае один только делитель является десятичным числом, а в третьем случае дивидендом является десятичное число. И во втором, и в третьем случаях мы получаем десятичное число в качестве результата.
В приведенном выше коде вы можете изменить точность, используя специальную переменную tcl_precision. Это показано ниже —
#!/usr/bin/tclsh set variableA "10" set tcl_precision 5 set result [expr $variableA / 9.0]; puts $result
Когда приведенный выше код выполняется, он дает следующий результат —
1.1111
Tcl — Операторы
Оператор — это символ, который указывает компилятору выполнять определенные математические или логические манипуляции. Язык Tcl богат встроенными операторами и предоставляет следующие типы операторов:
- Арифметические Операторы
- Операторы отношений
- Логические Операторы
- Битовые операторы
- Троичный оператор
В этой главе один за другим будут объяснены арифметические, реляционные, логические, побитовые и троичные операторы.
Арифметические Операторы
В следующей таблице приведены все арифметические операторы, поддерживаемые языком Tcl. Предположим, что переменная «A» содержит 10, а переменная «B» содержит 20, тогда —
оператор | Описание | пример |
---|---|---|
+ | Добавляет два операнда | А + Б даст 30 |
— | Вычитает второй операнд из первого | A — B даст -10 |
* | Умножает оба операнда | А * Б даст 200 |
/ | Делит числитель на числитель | Б / у даст 2 |
% | Оператор модуля и остаток от целочисленного деления | B% A даст 0 |
Операторы отношений
В следующей таблице показаны все реляционные операторы, поддерживаемые языком Tcl. Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда —
оператор | Описание | пример |
---|---|---|
== | Проверяет, равны ли значения двух операндов или нет, если да, тогда условие становится истинным. | (A == B) не соответствует действительности. |
знак равно | Проверяет, равны ли значения двух операндов или нет, если значения не равны, тогда условие становится истинным. | (A! = B) верно. |
> | Проверяет, больше ли значение левого операнда, чем значение правого операнда, если да, тогда условие становится истинным. | (A> B) не соответствует действительности. |
< | Проверяет, меньше ли значение левого операнда, чем значение правого операнда, если да, тогда условие становится истинным. | (A <B) верно. |
> = | Проверяет, больше ли значение левого операнда или равно значению правого операнда, если да, тогда условие становится истинным. | (A> = B) не соответствует действительности. |
<= | Проверяет, меньше ли значение левого операнда или равно значению правого операнда, если да, тогда условие становится истинным. | (A <= B) верно. |
Логические Операторы
В следующей таблице приведены все логические операторы, поддерживаемые языком Tcl. Предположим, что переменная A содержит 1, а переменная B содержит 0, тогда —
оператор | Описание | пример |
---|---|---|
&& | Называется логический оператор И. Если оба операнда отличны от нуля, условие становится истинным. | (A && B) неверно. |
|| | Вызывается логическим оператором ИЛИ. Если любой из двух операндов отличен от нуля, условие становится истинным. | (A || B) верно. |
! | Вызывается логическим оператором НЕ. Используйте для изменения логического состояния своего операнда. Если условие истинно, то оператор Логический НЕ будет делать ложь. | ! (A && B) верно. |
Битовые операторы
Побитовый оператор работает с битами и выполняет побитовую операцию. Таблицы истинности для &, | и ^ следующие:
п | Q | P & Q | р | Q | р ^ д |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
Предположим, если А = 60; и B = 13; теперь в двоичном формате они будут выглядеть следующим образом —
A = 0011 1100
B = 0000 1101
———————-
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
Побитовые операторы, поддерживаемые языком Tcl, перечислены в следующей таблице. Предположим, что переменная A содержит 60, а переменная B содержит 13, тогда —
оператор | Описание | пример |
---|---|---|
& | Двоичный оператор AND немного копирует результат, если он существует в обоих операндах. | (A & B) даст 12, что составляет 0000 1100 |
| | Оператор двоичного ИЛИ копирует немного, если он существует в любом из операндов. | (A | B) даст 61, что составляет 0011 1101 |
^ | Двоичный оператор XOR копирует бит, если он установлен в одном операнде, но не в обоих. | (A ^ B) даст 49, что составляет 0011 0001 |
<< | Двоичный оператор левого сдвига. Значение левого операнда перемещается влево на количество битов, указанное правым операндом. | А << 2 даст 240, что составляет 1111 0000 |
>> | Оператор двоичного правого сдвига. Значение левого операнда перемещается вправо на количество битов, указанное правым операндом. | A >> 2 даст 15, что составляет 0000 1111 |
Троичный оператор
оператор | Описание | пример |
---|---|---|
? : | троичный | Если условие верно? Тогда значение X: в противном случае значение Y |
Приоритет операторов в Tcl
Приоритет оператора определяет группировку терминов в выражении. Это влияет на то, как оценивается выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например, оператор умножения имеет более высокий приоритет, чем оператор сложения.
Например : х = 7 + 3 * 2; здесь x назначено 13, а не 20, потому что оператор * имеет более высокий приоритет, чем +, поэтому он сначала умножается на 3 * 2, а затем прибавляется к 7.
Здесь операторы с самым высоким приоритетом отображаются вверху таблицы, а операторы с самым низким — внизу. Внутри выражения операторы с более высоким приоритетом будут оцениваться первыми.
категория | оператор | Ассоциативность |
---|---|---|
Одинарный | + — | Справа налево |
Multiplicative | * /% | Слева направо |
присадка | + — | Слева направо |
сдвиг | << >> | Слева направо |
реляционный | <<=>> = | Слева направо |
Побитовое И | & | Слева направо |
Побитовый XOR | ^ | Слева направо |
Побитовое ИЛИ | | | Слева направо |
Логическое И | && | Слева направо |
Логическое ИЛИ | || | Слева направо |
троичный | ?: | Справа налево |
Tcl — Решения
Структуры принятия решений требуют, чтобы программист определял одно или несколько условий, которые должны быть оценены или протестированы программой, вместе с оператором или инструкциями, которые должны быть выполнены, если условие определено как истинное, и, необязательно, другие операторы, которые должны быть выполнены, если условие определяется как ложный.
Ниже приводится общая форма типичной структуры принятия решений, встречающейся в большинстве языков программирования.
Язык Tcl использует команду expr для внутреннего использования, поэтому мы не обязаны явно использовать выражение expr.
Язык Tcl предоставляет следующие типы заявлений о принятии решений —
Sr.No. | Заявление и описание |
---|---|
1 | если заявление
Оператор ‘if’ состоит из логического выражения, за которым следует одно или несколько операторов. |
2 | если … еще заявление
За оператором if может следовать необязательный оператор else, который выполняется, когда логическое выражение имеет значение false. |
3 | вложенные операторы if
Вы можете использовать один оператор «if» или «else if» внутри другого оператора «if» или «else if». |
4 | заявление о переключении
Оператор switch позволяет проверять переменную на соответствие списку значений. |
5 | вложенные операторы switch
Вы можете использовать один оператор switch внутри другого оператора (ов) switch . |
Оператор ‘if’ состоит из логического выражения, за которым следует одно или несколько операторов.
За оператором if может следовать необязательный оператор else, который выполняется, когда логическое выражение имеет значение false.
Вы можете использовать один оператор «if» или «else if» внутри другого оператора «if» или «else if».
Оператор switch позволяет проверять переменную на соответствие списку значений.
Вы можете использовать один оператор switch внутри другого оператора (ов) switch .
? : Оператор
Мы накрыли условного оператора? : в предыдущей главе, которая может быть использована для замены операторов if … else . Он имеет следующую общую форму —
Exp1 ? Exp2 : Exp3;
Где Exp1, Exp2 и Exp3 являются выражениями. Обратите внимание на использование и размещение толстой кишки.
Значение а? выражение ‘определяется следующим образом: Exp1 оценивается. Если это правда, тогда Exp2 вычисляется и становится значением целого ‘? Выражение «. Если Exp1 имеет значение false, то Exp3 оценивается, и его значение становится значением выражения. Пример показан ниже.
#!/usr/bin/tclsh set a 10; set b [expr $a == 1 ? 20: 30] puts "Value of b is $b\n" set b [expr $a == 10 ? 20: 30] puts "Value of b is $b\n"
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
Value of b is 30 Value of b is 20
Tcl — Петли
Может возникнуть ситуация, когда вам нужно выполнить блок кода несколько раз. В общем случае операторы выполняются последовательно: первый оператор в функции выполняется первым, затем второй и так далее.
Языки программирования предоставляют различные управляющие структуры, которые допускают более сложные пути выполнения.
Оператор цикла позволяет нам выполнять оператор или группу операторов несколько раз, и в большинстве языков программирования ниже приводится общая форма инструкции цикла.
Язык Tcl предоставляет следующие типы циклов для обработки требований циклов.
Sr.No. | Тип и описание петли |
---|---|
1 | в то время как цикл
Повторяет оператор или группу операторов, пока данное условие выполняется. Он проверяет условие перед выполнением тела цикла. |
2 | для цикла
Выполняет последовательность операторов несколько раз и сокращает код, который управляет переменной цикла. |
3 | вложенные циклы
Вы можете использовать один или несколько циклов внутри любого другого цикла while, for или do.. while. |
Повторяет оператор или группу операторов, пока данное условие выполняется. Он проверяет условие перед выполнением тела цикла.
Выполняет последовательность операторов несколько раз и сокращает код, который управляет переменной цикла.
Вы можете использовать один или несколько циклов внутри любого другого цикла while, for или do.. while.
Заявления о контроле цикла
Операторы управления циклом изменяют выполнение от его нормальной последовательности. Когда выполнение покидает область действия, все автоматические объекты, созданные в этой области, уничтожаются.
Tcl поддерживает следующие управляющие операторы.
Sr.No. | Контрольное заявление и описание |
---|---|
1 | заявление о нарушении
Завершает оператор цикла или переключателя и передает выполнение в оператор, следующий сразу за циклом или переключателем. |
2 | продолжить заявление
Заставляет петлю пропускать оставшуюся часть своего тела и немедленно проверять свое состояние перед повторением. |
Завершает оператор цикла или переключателя и передает выполнение в оператор, следующий сразу за циклом или переключателем.
Заставляет петлю пропускать оставшуюся часть своего тела и немедленно проверять свое состояние перед повторением.
Бесконечный цикл
Цикл становится бесконечным, если условие никогда не становится ложным. Цикл while традиционно используется для этой цели. Вы можете сделать бесконечный цикл, оставив условное выражение равным 1.
while {1} { puts "This loop will run forever." }
Когда условное выражение отсутствует, оно считается истинным. Программисты Tcl чаще используют конструкцию while {1} для обозначения бесконечного цикла.
ПРИМЕЧАНИЕ. — Вы можете завершить бесконечный цикл, нажав клавиши Ctrl + C.
Tcl — Массивы
Массив — это систематическое расположение группы элементов с использованием индексов. Синтаксис для обычного массива показан ниже.
set ArrayName(Index) value
Пример для создания простого массива показан ниже.
#!/usr/bin/tclsh set languages(0) Tcl set languages(1) "C Language" puts $languages(0) puts $languages(1)
Когда приведенный выше код выполняется, он дает следующий результат —
Tcl C Language
Размер массива
Синтаксис для вычисления размера массива показан ниже.
[array size variablename]
Пример для печати размера показан ниже.
#!/usr/bin/tclsh set languages(0) Tcl set languages(1) "C Language" puts [array size languages]
Когда приведенный выше код выполняется, он дает следующий результат —
2
Итерация массива
Хотя индексы массива могут быть не непрерывными, как значения, указанные для индекса 1, затем индекса 10 и так далее. Но, если они непрерывны, мы можем использовать итерацию массива для доступа к элементам массива. Простая итерация массива для печати элементов массива показана ниже.
#!/usr/bin/tclsh set languages(0) Tcl set languages(1) "C Language" for { set index 0 } { $index < [array size languages] } { incr index } { puts "languages($index) : $languages($index)" }
Когда приведенный выше код выполняется, он дает следующий результат —
languages(0) : Tcl languages(1) : C Language
Ассоциативные массивы
В Tcl все массивы по своей природе являются ассоциативными. Массивы хранятся и извлекаются без какого-либо определенного порядка. Ассоциативные массивы имеют индекс, который не обязательно является числом и может быть малонаселенным. Простой пример для ассоциативного массива с нечисловыми индексами показан ниже.
#!/usr/bin/tclsh set personA(Name) "Dave" set personA(Age) 14 puts $personA(Name) puts $personA(Age)
Когда приведенный выше код выполняется, он дает следующий результат —
Dave 14
Индексы массива
Синтаксис для получения индексов массива показан ниже.
[array names variablename]
Пример для печати размера показан ниже.
#!/usr/bin/tclsh set personA(Name) "Dave" set personA(Age) 14 puts [array names personA]
Когда приведенный выше код выполняется, он дает следующий результат —
Age Name
Итерация ассоциативного массива
Вы можете использовать индексы массива для итерации по ассоциативному массиву. Пример показан ниже.
#!/usr/bin/tclsh set personA(Name) "Dave" set personA(Age) 14 foreach index [array names personA] { puts "personA($index): $personA($index)" }
Когда приведенный выше код выполняется, он дает следующий результат —
personA(Age): 14 personA(Name): Dave
Tcl — Струны
Примитивный тип данных Tcl — строка, и часто мы можем найти кавычки на Tcl как язык только для строк. Эти строки могут содержать буквенно-цифровые символы, только цифры, логические или даже двоичные данные. Tcl использует 16-битные символы Unicode, а буквенно-цифровые символы могут содержать буквы, включая нелатинские символы, цифры или знаки пунктуации.
Логическое значение может быть представлено как 1, да или истина для истины и 0, нет или ложь для ложного.
Строковые представления
В отличие от других языков, в Tcl вам не нужно включать двойные кавычки, когда это всего лишь одно слово. Примером может быть —
#!/usr/bin/tclsh set myVariable hello puts $myVariable
Когда приведенный выше код выполняется, он дает следующий результат —
hello
Когда мы хотим представить несколько строк, мы можем использовать либо двойные кавычки, либо фигурные скобки. Это показано ниже —
#!/usr/bin/tclsh set myVariable "hello world" puts $myVariable set myVariable {hello world} puts $myVariable
Когда приведенный выше код выполняется, он дает следующий результат —
hello world hello world
Последовательность выхода из строки
Символьный литерал может быть простым символом (например, «x»), escape-последовательностью (например, «\ t») или универсальным символом (например, «\ u02C0»).
В Tcl есть определенные символы, когда им предшествует обратная косая черта, они будут иметь особое значение и использоваться для представления, например, новой строки (\ n) или табуляции (\ t). Здесь у вас есть список некоторых из таких кодов escape-последовательностей —
Последовательность побега | Имея в виду |
---|---|
\\ | \ персонаж |
\» | ‘ персонаж |
\» | » персонаж |
\? | ? персонаж |
\ а | Оповещение или звонок |
\ б | возврат на одну позицию |
\ е | Форма подачи |
\ п | Новая линия |
\р | Возврат каретки |
\ т | Горизонтальная вкладка |
\ v | Вертикальная вкладка |
Ниже приведен пример, показывающий несколько символов escape-последовательности:
#!/usr/bin/tclsh puts "Hello\tWorld\n\nTutorialspoint";
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Hello World Tutorialspoint
Строковая команда
Список подкоманд для строковых команд приведен в следующей таблице:
Sr.No. | Методы и описание |
---|---|
1 |
сравнить строку1 строку2 Сравнивает строку1 и строку2 лексографически. Возвращает 0, если равно, -1, если строка1 предшествует строке2, иначе 1. |
2 |
первая строка1 строка2 Возвращает индекс первого появления строки1 в строке2. Если не найден, возвращает -1. |
3 |
индексная строка Возвращает символ по индексу. |
4 |
последняя строка1 строка2 Возвращает индекс последнего вхождения string1 в string2. Если не найден, возвращает -1. |
5 |
длина строки Возвращает длину строки. |
6 |
строка соответствия шаблона Возвращает 1, если строка соответствует шаблону. |
7 |
строка диапазона index1 index2 Вернуть диапазон символов в строке от index1 до index2. |
8 |
гирлянда Возвращает строчную строку. |
9 |
струна тупер Возвращает заглавную строку. |
10 |
обрезать строку? Удаляет триммерные символы в обоих концах строки. Триммерными символами по умолчанию является пробел. |
11 |
триммерная строка? Удаляет символы в левом начале строки. Триммерными символами по умолчанию является пробел. |
12 |
аккуратная строка? Удаляет триммерные символы в левом конце строки. Триммерными символами по умолчанию является пробел. |
13 |
индекс поиска строки Возвращает индекс в строке поиска символа после слова, содержащего символ в индексе. |
14 |
поиск слов Возвращает индекс в строке поиска первого символа в слове, содержащем символ в индексе. |
сравнить строку1 строку2
Сравнивает строку1 и строку2 лексографически. Возвращает 0, если равно, -1, если строка1 предшествует строке2, иначе 1.
первая строка1 строка2
Возвращает индекс первого появления строки1 в строке2. Если не найден, возвращает -1.
индексная строка
Возвращает символ по индексу.
последняя строка1 строка2
Возвращает индекс последнего вхождения string1 в string2. Если не найден, возвращает -1.
длина строки
Возвращает длину строки.
строка соответствия шаблона
Возвращает 1, если строка соответствует шаблону.
строка диапазона index1 index2
Вернуть диапазон символов в строке от index1 до index2.
гирлянда
Возвращает строчную строку.
струна тупер
Возвращает заглавную строку.
обрезать строку?
Удаляет триммерные символы в обоих концах строки. Триммерными символами по умолчанию является пробел.
триммерная строка?
Удаляет символы в левом начале строки. Триммерными символами по умолчанию является пробел.
аккуратная строка?
Удаляет триммерные символы в левом конце строки. Триммерными символами по умолчанию является пробел.
индекс поиска строки
Возвращает индекс в строке поиска символа после слова, содержащего символ в индексе.
поиск слов
Возвращает индекс в строке поиска первого символа в слове, содержащем символ в индексе.
Примеры некоторых часто используемых подкоманд Tcl string приведены ниже.
Сравнение строк
#!/usr/bin/tclsh set s1 "Hello" set s2 "World" set s3 "World" puts [string compare s1 s2] if {[string compare s2 s3] == 0} { puts "String \'s1\' and \'s2\' are same."; } if {[string compare s1 s2] == -1} { puts "String \'s1\' comes before \'s2\'."; } if {[string compare s2 s1] == 1} { puts "String \'s2\' comes after \'s1\'."; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
-1 String 's1' comes before 's2'. String 's2' comes after 's1'.
Индекс строки
#!/usr/bin/tclsh set s1 "Hello World" set s2 "o" puts "First occurrence of $s2 in s1" puts [string first $s2 $s1] puts "Character at index 0 in s1" puts [string index $s1 0] puts "Last occurrence of $s2 in s1" puts [string last $s2 $s1] puts "Word end index in s1" puts [string wordend $s1 20] puts "Word start index in s1" puts [string wordstart $s1 20]
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
First occurrence of o in s1 4 Character at index 0 in s1 H Last occurrence of o in s1 7 Word end index in s1 11 Word start index in s1 6
Длина строки
#!/usr/bin/tclsh set s1 "Hello World" puts "Length of string s1" puts [string length $s1]
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Length of string s1 11
Обработка дел
#!/usr/bin/tclsh set s1 "Hello World" puts "Uppercase string of s1" puts [string toupper $s1] puts "Lowercase string of s1" puts [string tolower $s1]
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Uppercase string of s1 HELLO WORLD Lowercase string of s1 hello world
Обрезка персонажей
#!/usr/bin/tclsh set s1 "Hello World" set s2 "World" puts "Trim right $s2 in $s1" puts [string trimright $s1 $s2] set s2 "Hello" puts "Trim left $s2 in $s1" puts [string trimleft $s1 $s2] set s1 " Hello World " set s2 " " puts "Trim characters s1 on both sides of s2" puts [string trim $s1 $s2]
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Trim right World in Hello World Hello Trim left Hello in Hello World World Trim characters s1 on both sides of s2 Hello World
Соответствующие строки
#!/usr/bin/tclsh set s1 "[email protected]" set s2 "*@*.com" puts "Matching pattern s2 in s1" puts [string match "*@*.com" $s1 ] puts "Matching pattern tcl in s1" puts [string match {tcl} $s1]
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Matching pattern s2 in s1 1 Matching pattern tcl in s1 0
Добавить команду
#!/usr/bin/tclsh set s1 "Hello" append s1 " World" puts $s1
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Hello World
Команда форматирования
В следующей таблице приведен список спецификаторов формата, доступных в Tcl.
Тендерный | использование |
---|---|
% s | Строковое представление |
% d | Целочисленное представление |
% е | Представление с плавающей точкой |
% е | Представление с плавающей точкой в мантиссе-показательной форме |
%Икс | Гекса десятичное представление |
Некоторые простые примеры приведены ниже —
#!/usr/bin/tclsh puts [format "%f" 43.5] puts [format "%e" 43.5] puts [format "%d %s" 4 tuts] puts [format "%s" "Tcl Language"] puts [format "%x" 40]
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
43.500000 4.350000e+01 4 tuts Tcl Language 28
Команда сканирования
Команда сканирования используется для анализа строки на основе спецификатора формата. Некоторые примеры приведены ниже.
#!/usr/bin/tclsh puts [scan "90" {%[0-9]} m] puts [scan "abc" {%[a-z]} m] puts [scan "abc" {%[A-Z]} m] puts [scan "ABC" {%[A-Z]} m]
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
1 1 0 1
Tcl — Списки
Список является одним из основных типов данных, доступных в Tcl. Используется для представления упорядоченной коллекции предметов. Он может включать различные типы элементов в одном списке. Кроме того, список может содержать другой список.
Важно отметить, что эти списки полностью представлены в виде строк и при необходимости обрабатываются для формирования отдельных элементов. Поэтому избегайте больших списков и в таких случаях; использовать массив.
Создание списка
Общий синтаксис для списка приведен ниже —
set listName { item1 item2 item3 .. itemn } # or set listName [list item1 item2 item3] # or set listName [split "items separated by a character" split_character]
Некоторые примеры приведены ниже —
#!/usr/bin/tclsh set colorList1 {red green blue} set colorList2 [list red green blue] set colorList3 [split "red_green_blue" _] puts $colorList1 puts $colorList2 puts $colorList3
Когда приведенный выше код выполняется, он дает следующий результат —
red green blue red green blue red green blue
Добавление элемента в список
Синтаксис для добавления элемента в список приведен ниже —
append listName split_character value # or lappend listName value
Некоторые примеры приведены ниже —
#!/usr/bin/tclsh set var orange append var " " "blue" lappend var "red" lappend var "green" puts $var
Когда приведенный выше код выполняется, он дает следующий результат —
orange blue red green
Длина списка
Синтаксис длины списка приведен ниже —
llength listName
Пример длины списка приведен ниже —
#!/usr/bin/tclsh set var {orange blue red green} puts [llength $var]
Когда приведенный выше код выполняется, он дает следующий результат —
4
Элемент списка в указателе
Синтаксис для выбора элемента списка по определенному индексу приведен ниже —
lindex listname index
Пример для элемента списка в индексе приведен ниже —
#!/usr/bin/tclsh set var {orange blue red green} puts [lindex $var 1]
Когда приведенный выше код выполняется, он дает следующий результат —
blue
Вставить элемент в указатель
Синтаксис для вставки элементов списка по определенному индексу приведен ниже.
linsert listname index value1 value2..valuen
Пример для вставки элемента списка по определенному индексу приведен ниже.
#!/usr/bin/tclsh set var {orange blue red green} set var [linsert $var 3 black white] puts $var
Когда приведенный выше код выполняется, он дает следующий результат —
orange blue red black white green
Заменить предметы по индексам
Синтаксис для замены элементов списка по определенным индексам приведен ниже —
lreplace listname firstindex lastindex value1 value2..valuen
Пример замены элементов списка на конкретные индексы приведен ниже.
#!/usr/bin/tclsh set var {orange blue red green} set var [lreplace $var 2 3 black white] puts $var
Когда приведенный выше код выполняется, он дает следующий результат —
orange blue black white
Установить элемент на индекс
Синтаксис для установки элемента списка по определенному индексу приведен ниже —
lset listname index value
Пример настройки элемента списка по определенному индексу приведен ниже —
#!/usr/bin/tclsh set var {orange blue red green} lset var 0 black puts $var
Когда приведенный выше код выполняется, он дает следующий результат —
black blue red green
Преобразовать список в переменные
Синтаксис для копирования значений в переменные приведен ниже —
lassign listname variable1 variable2.. variablen
Пример для преобразования списка в переменные приведен ниже —
#!/usr/bin/tclsh set var {orange blue red green} lassign $var colour1 colour2 puts $colour1 puts $colour2
Когда приведенный выше код выполняется, он дает следующий результат —
orange blue
Сортировка списка
Синтаксис для сортировки списка приведен ниже —
lsort listname
Пример для сортировки списка приведен ниже —
#!/usr/bin/tclsh set var {orange blue red green} set var [lsort $var] puts $var
Когда приведенный выше код выполняется, он дает следующий результат —
blue green orange red
Tcl — словарь
Словарь — это схема сопоставления значений с ключами. Синтаксис для обычного словаря показан ниже —
dict set dictname key value # or dict create dictname key1 value1 key2 value2 .. keyn valuen
Некоторые примеры для создания словаря показаны ниже —
#!/usr/bin/tclsh dict set colours colour1 red puts $colours dict set colours colour2 green puts $colours set colours [dict create colour1 "black" colour2 "white"] puts $colours
Когда приведенный выше код выполняется, он дает следующий результат —
colour1 red colour1 red colour2 green colour1 black colour2 white
Размер Дикта
Синтаксис для получения размера dict показан ниже —
[dict size dictname]
Пример для печати размера показан ниже —
#!/usr/bin/tclsh set colours [dict create colour1 "black" colour2 "white"] puts [dict size $colours]
Когда приведенный выше код выполняется, он дает следующий результат —
2
Словарь итерации
Простая итерация словаря для печати ключей и значения словаря показана ниже —
#!/usr/bin/tclsh set colours [dict create colour1 "black" colour2 "white"] foreach item [dict keys $colours] { set value [dict get $colours $item] puts $value }
Когда приведенный выше код выполняется, он дает следующий результат —
black white
Значение для ключа в Dict
Синтаксис для получения значения для ключа в dict показан ниже —
[dict get $dictname $keyname]
Пример для получения значения для ключа приведен ниже —
#!/usr/bin/tclsh set colours [dict create colour1 "black" colour2 "white"] set value [dict get $colours colour1] puts $value
Когда приведенный выше код выполняется, он дает следующий результат —
black
Все ключи в Dict
Синтаксис для получения всех ключей в dict показан ниже —
[dict keys $dictname]
Пример для печати всех ключей показан ниже —
#!/usr/bin/tclsh set colours [dict create colour1 "black" colour2 "white"] set keys [dict keys $colours] puts $keys
Когда приведенный выше код выполняется, он дает следующий результат —
colour1 colour2
Все значения в Dict
Синтаксис для получения всех значений в dict показан ниже —
[dict values $dictname]
Пример для печати всех значений показан ниже —
#!/usr/bin/tclsh set colours [dict create colour1 "black" colour2 "white"] set values [dict values $colours] puts $values
Когда приведенный выше код выполняется, он дает следующий результат —
black white
Ключ существует в Dict
Синтаксис проверки наличия ключа в dict показан ниже —
[dict exists $dictname $key]
Пример проверки, существует ли ключ в dict, показан ниже —
#!/usr/bin/tclsh set colours [dict create colour1 "black" colour2 "white"] set result [dict exists $colours colour1] puts $result
Когда приведенный выше код выполняется, он дает следующий результат —
1
Tcl — Процедуры
Процедуры — это не что иное, как блоки кода с серией команд, которые обеспечивают определенную функциональность многократного использования. Он используется, чтобы избежать повторения одного и того же кода в нескольких местах. Процедуры эквивалентны функциям, используемым во многих языках программирования, и доступны в Tcl с помощью команды proc .
Синтаксис создания простой процедуры показан ниже —
proc procedureName {arguments} { body }
Простой пример процедуры приведен ниже —
#!/usr/bin/tclsh proc helloWorld {} { puts "Hello, World!" } helloWorld
Когда приведенный выше код выполняется, он дает следующий результат —
Hello, World!
Процедуры с несколькими аргументами
Пример для процедуры с аргументами показан ниже —
#!/usr/bin/tclsh proc add {a b} { return [expr $a+$b] } puts [add 10 30]
Когда приведенный выше код выполняется, он дает следующий результат —
40
Процедуры с переменными аргументами
Пример для процедуры с аргументами показан ниже —
#!/usr/bin/tclsh proc avg {numbers} { set sum 0 foreach number $numbers { set sum [expr $sum + $number] } set average [expr $sum/[llength $numbers]] return $average } puts [avg {70 80 50 60}] puts [avg {70 80 50 }]
Когда приведенный выше код выполняется, он дает следующий результат —
65 66
Процедуры с аргументами по умолчанию
Аргументы по умолчанию используются для предоставления значений по умолчанию, которые можно использовать, если значение не указано. Пример процедуры с аргументами по умолчанию, которые иногда называют неявными аргументами, показан ниже —
#!/usr/bin/tclsh proc add {a {b 100} } { return [expr $a+$b] } puts [add 10 30] puts [add 10]
Когда приведенный выше код выполняется, он дает следующий результат —
40 110
Рекурсивные процедуры
Пример для рекурсивных процедур показан ниже —
#!/usr/bin/tclsh proc factorial {number} { if {$number <= 1} { return 1 } return [expr $number * [factorial [expr $number - 1]]] } puts [factorial 3] puts [factorial 5]
Когда приведенный выше код выполняется, он дает следующий результат —
6 120
Tcl — Пакеты
Пакеты используются для создания повторно используемых блоков кода. Пакет состоит из набора файлов, которые предоставляют определенные функции. Эта коллекция файлов идентифицируется по имени пакета и может иметь несколько версий одних и тех же файлов. Пакет может быть набором сценариев Tcl, двоичной библиотекой или их комбинацией.
Пакет использует концепцию пространства имен, чтобы избежать конфликта имен переменных и процедур. Узнайте больше в нашем следующем уроке «Пространство имен ».
Создание пакета
Пакет может быть создан с помощью минимум двух файлов. Один файл содержит код пакета. Другой файл содержит индексный файл пакета для объявления вашего пакета.
Список шагов для создания и использования пакета приведен ниже.
ШАГ 1: Создание кода
Создайте код для пакета внутри папки, скажем, HelloWorld. Пусть файл с именем HelloWorld.tcl с кодом, как показано ниже —
# /Users/rajkumar/Desktop/helloworld/HelloWorld.tcl # Create the namespace namespace eval ::HelloWorld { # Export MyProcedure namespace export MyProcedure # My Variables set version 1.0 set MyDescription "HelloWorld" # Variable for the path of the script variable home [file join [pwd] [file dirname [info script]]] } # Definition of the procedure MyProcedure proc ::HelloWorld::MyProcedure {} { puts $HelloWorld::MyDescription } package provide HelloWorld $HelloWorld::version package require Tcl 8.0
ШАГ 2: Создание индекса пакета
Откройте тцлш. Перейдите в каталог HelloWorld и используйте команду pkg_mkIndex, чтобы создать индексный файл, как показано ниже —
% cd /Users/rajkumar/Desktop/helloworld % pkg_mkIndex . *.tcl
ШАГ 3: Добавление каталога в Autopath
Используйте команду lappend, чтобы добавить пакет в глобальный список, как показано ниже —
% lappend auto_path "/Users/rajkumar/Desktop/helloworld"
ШАГ 4: Добавление пакета
Затем добавьте пакет в программу, используя выражение запроса пакета, как показано ниже —
% package require HelloWorld 1.0
ШАГ 5: Процедура вызова
Теперь, когда все настроено, мы можем вызвать нашу процедуру, как показано ниже —
% puts [HelloWorld::MyProcedure]
Вы получите следующий результат —
HelloWorld
Первые два шага создать пакет. После создания пакета вы можете использовать его в любом Tcl-файле, добавив три последних оператора, как показано ниже:
lappend auto_path "/Users/rajkumar/Desktop/helloworld" package require HelloWorld 1.0 puts [HelloWorld::MyProcedure]
Вы получите следующий результат —
HelloWorld
Tcl — Пространства имен
Пространство имен — это контейнер для набора идентификаторов, который используется для группировки переменных и процедур. Пространства имен доступны из Tcl версии 8.0. До введения пространств имен существовала единая глобальная область. Теперь с пространствами имен у нас есть дополнительные разделы глобальной области видимости.
Создание пространства имен
Пространства имен создаются с помощью команды namespace . Простой пример создания пространства имен показан ниже —
#!/usr/bin/tclsh namespace eval MyMath { # Create a variable inside the namespace variable myResult } # Create procedures inside the namespace proc MyMath::Add {a b } { set ::MyMath::myResult [expr $a + $b] } MyMath::Add 10 23 puts $::MyMath::myResult
Когда приведенный выше код выполняется, он дает следующий результат —
33
В приведенной выше программе вы можете видеть, что есть пространство имен с переменной myResult и процедурой Add. Это позволяет создавать переменные и процедуры с одинаковыми именами в разных пространствах имен.
Вложенные пространства имен
Tcl позволяет вложить пространства имен. Простой пример для вложения пространств имен приведен ниже —
#!/usr/bin/tclsh namespace eval MyMath { # Create a variable inside the namespace variable myResult } namespace eval extendedMath { # Create a variable inside the namespace namespace eval MyMath { # Create a variable inside the namespace variable myResult } } set ::MyMath::myResult "test1" puts $::MyMath::myResult set ::extendedMath::MyMath::myResult "test2" puts $::extendedMath::MyMath::myResult
Когда приведенный выше код выполняется, он дает следующий результат —
test1 test2
Импорт и экспорт пространства имен
Вы можете видеть в предыдущих примерах пространства имен, мы используем много операторов разрешения области видимости, и это более сложный в использовании. Мы можем избежать этого, импортируя и экспортируя пространства имен. Пример приведен ниже —
#!/usr/bin/tclsh namespace eval MyMath { # Create a variable inside the namespace variable myResult namespace export Add } # Create procedures inside the namespace proc MyMath::Add {a b } { return [expr $a + $b] } namespace import MyMath::* puts [Add 10 30]
Когда приведенный выше код выполняется, он дает следующий результат —
40
Забыть пространство имен
Вы можете удалить импортированное пространство имен, используя подкоманду Forgot. Простой пример показан ниже —
#!/usr/bin/tclsh namespace eval MyMath { # Create a variable inside the namespace variable myResult namespace export Add } # Create procedures inside the namespace proc MyMath::Add {a b } { return [expr $a + $b] } namespace import MyMath::* puts [Add 10 30] namespace forget MyMath::*
Когда приведенный выше код выполняется, он дает следующий результат —
40
Tcl — File I / O
Tcl поддерживает обработку файлов с помощью встроенных команд открывать, читать, ставить, получать и закрывать.
Файл представляет собой последовательность байтов, не имеет значения, является ли это текстовым файлом или двоичным файлом.
Открытие файлов
Tcl использует команду open для открытия файлов в Tcl. Синтаксис для открытия файла выглядит следующим образом:
open fileName accessMode
Здесь filename является строковым литералом, который вы будете использовать для именования вашего файла, и accessMode может иметь одно из следующих значений:
Sr.No. | Режим и описание |
---|---|
1 |
р Открывает существующий текстовый файл для чтения, и файл должен существовать. Этот режим используется по умолчанию, если не указан accessMode. |
2 |
вес Открывает текстовый файл для записи, если он не существует, то создается новый файл, иначе существующий файл усекается. |
3 |
Открывает текстовый файл для записи в режиме добавления, и файл должен существовать. Здесь ваша программа начнет добавлять содержимое в существующий файл содержимого. |
4 |
г & плюс; Открывает текстовый файл для чтения и записи как. Файл должен существовать уже. |
5 |
ж & плюс; Открывает текстовый файл для чтения и записи как. Сначала он обрезает файл до нулевой длины, если он существует, в противном случае создайте файл, если он не существует. |
6 |
плюс; Открывает текстовый файл для чтения и записи как. Он создает файл, если он не существует. Чтение начнется с самого начала, но запись может быть только добавлена. |
р
Открывает существующий текстовый файл для чтения, и файл должен существовать. Этот режим используется по умолчанию, если не указан accessMode.
вес
Открывает текстовый файл для записи, если он не существует, то создается новый файл, иначе существующий файл усекается.
Открывает текстовый файл для записи в режиме добавления, и файл должен существовать. Здесь ваша программа начнет добавлять содержимое в существующий файл содержимого.
г & плюс;
Открывает текстовый файл для чтения и записи как. Файл должен существовать уже.
ж & плюс;
Открывает текстовый файл для чтения и записи как. Сначала он обрезает файл до нулевой длины, если он существует, в противном случае создайте файл, если он не существует.
плюс;
Открывает текстовый файл для чтения и записи как. Он создает файл, если он не существует. Чтение начнется с самого начала, но запись может быть только добавлена.
Закрытие файла
Чтобы закрыть файл, используйте команду закрытия. Синтаксис для закрытия следующий —
close fileName
Любой файл, который был открыт программой, должен быть закрыт, когда программа заканчивает использовать этот файл. В большинстве случаев файлы не нужно закрывать явно; они закрываются автоматически, когда объекты File автоматически завершаются.
Написание файла
Команда Puts используется для записи в открытый файл.
puts $filename "text to write"
Простой пример записи в файл показан ниже.
#!/usr/bin/tclsh set fp [open "input.txt" w+] puts $fp "test" close $fp
Когда приведенный выше код компилируется и выполняется, он создает новый файл input.txt в каталоге, в котором он был запущен (в рабочем каталоге программы).
Чтение файла
Ниже приводится простая команда для чтения из файла —
set file_data [read $fp]
Полный пример чтения и записи показан ниже —
#!/usr/bin/tclsh set fp [open "input.txt" w+] puts $fp "test" close $fp set fp [open "input.txt" r] set file_data [read $fp] puts $file_data close $fp
Когда приведенный выше код компилируется и выполняется, он читает файл, созданный в предыдущем разделе, и выдает следующий результат:
test
Вот еще один пример для чтения файла до конца файла строка за строкой —
#!/usr/bin/tclsh set fp [open "input.txt" w+] puts $fp "test\ntest" close $fp set fp [open "input.txt" r] while { [gets $fp data] >= 0 } { puts $data } close $fp
Когда приведенный выше код компилируется и выполняется, он читает файл, созданный в предыдущем разделе, и выдает следующий результат:
test test
Tcl — Обработка ошибок
Обработка ошибок в Tcl обеспечивается с помощью команд error и catch . Синтаксис каждой из этих команд показан ниже.
Синтаксис ошибки
error message info code
В приведенном выше синтаксисе команды error сообщение является сообщением об ошибке, информация задается в глобальной переменной errorInfo, а код задается в глобальной переменной errorCode.
Поймать синтаксис
catch script resultVarName
В приведенном выше синтаксисе команды catch сценарий — это код, который должен быть выполнен, а resultVarName — переменная, которая содержит ошибку или результат. Команда catch возвращает 0, если ошибки нет, и 1, если есть ошибка.
Пример простой обработки ошибок показан ниже —
#!/usr/bin/tclsh proc Div {a b} { if {$b == 0} { error "Error generated by error" "Info String for error" 401 } else { return [expr $a/$b] } } if {[catch {puts "Result = [Div 10 0]"} errmsg]} { puts "ErrorMsg: $errmsg" puts "ErrorCode: $errorCode" puts "ErrorInfo:\n$errorInfo\n" } if {[catch {puts "Result = [Div 10 2]"} errmsg]} { puts "ErrorMsg: $errmsg" puts "ErrorCode: $errorCode" puts "ErrorInfo:\n$errorInfo\n" }
Когда приведенный выше код выполняется, он дает следующий результат —
ErrorMsg: Error generated by error ErrorCode: 401 ErrorInfo: Info String for error (procedure "Div" line 1) invoked from within "Div 10 0" Result = 5
Как вы можете видеть в приведенном выше примере, мы можем создавать наши собственные сообщения об ошибках. Точно так же можно отловить ошибку, сгенерированную Tcl. Пример показан ниже —
#!/usr/bin/tclsh catch {set file [open myNonexistingfile.txt]} result puts "ErrorMsg: $result" puts "ErrorCode: $errorCode" puts "ErrorInfo:\n$errorInfo\n"
Когда приведенный выше код выполняется, он дает следующий результат —
ErrorMsg: couldn't open "myNonexistingfile.txt": no such file or directory ErrorCode: POSIX ENOENT {no such file or directory} ErrorInfo: couldn't open "myNonexistingfile.txt": no such file or directory while executing "open myNonexistingfile.txt"
Tcl — встроенные функции
Tcl предоставляет ряд встроенных функций (процедур) для различных операций. Это включает в себя —
-
Функции для обработки списка .
-
Функции для обработки строк .
-
Функции для обработки массива .
-
Функции для работы со словарем .
-
Функции для обработки файлового ввода-вывода .
-
Функции для создания пространств имен и пакетов.
-
Функции для математических операций.
-
Функции для работы системы.
Функции для обработки списка .
Функции для обработки строк .
Функции для обработки массива .
Функции для работы со словарем .
Функции для обработки файлового ввода-вывода .
Функции для создания пространств имен и пакетов.
Функции для математических операций.
Функции для работы системы.
Все вышеперечисленное, за исключением математических и системных функций, рассматривается в предыдущих главах. Математика и встроенные функции системы описаны ниже.
Математические функции
Математические функции, доступные в Tcl, перечислены в следующей таблице:
Sr.No. | Метод и описание |
---|---|
1 |
абс арг Рассчитывает абсолютное значение арг. |
2 |
Acos Arg Рассчитывает арккозин арг. |
3 |
Асин Арг Рассчитывает арксинус арг. |
4 |
Атан Арг Рассчитывает арктангенс арг. |
5 |
atan2 yx Вычисляет арктангенс фактора его аргументов (у / х). |
6 |
Ceil Arg Вычисляет наименьшее целое число, большее или равное числу. |
7 |
потому что арг Рассчитывает косинус арг. |
8 |
Кош Арг Рассчитывает гиперболический косинус арг. |
9 |
двойной арг Вычисляет, является ли arg значением с плавающей точкой, возвращает arg, в противном случае преобразует arg в число с плавающей точкой и возвращает преобразованное значение. |
10 |
Exp Arg Вычисляет экспоненциальную функцию (е возводится в степень аргумента). |
11 |
пол арг Вычисляет наибольшее целое число, меньшее или равное arg. |
12 |
FMOD XY Вычисляет остаток с плавающей точкой от деления x на y. Если y равно 0, возвращается ошибка. |
13 |
гипотеза ху Вычисляет длину гипотенузы прямоугольного треугольника sqrt (x * x + y * y). |
14 |
Int Arg Вычисляет, является ли arg целочисленным значением той же ширины, что и машинное слово, возвращает arg, в противном случае arg преобразуется в целое число. |
15 |
лог арг Рассчитывает натуральный логарифм арг. |
16 |
log10 arg Рассчитывает основание 10 логарифм аргумента. |
17 |
Pow XY Вычисляет значение x, возведенное в степень y. Если x отрицательно, y должно быть целочисленным значением. |
18 |
рант Вычисляет псевдослучайное число от 0 до 1. |
19 |
круглый арг Вычисляет значение arg, округленное до ближайшего целого числа. |
20 |
грешник Рассчитывает синус арг. |
21 |
синх арг Рассчитывает гиперболический синус арг. |
22 |
sqrt arg Рассчитывает квадратный корень из арг. аргумент должен быть положительным. |
23 |
Srand Arg Вычисляет псевдослучайное число между 0 и 1. Аргумент, который должен быть целым числом, используется для сброса начального числа для генератора случайных чисел rand. |
24 |
Tan Arg Рассчитывает тангенс арг. |
25 |
Тан Арг Вычисляет гиперболический тангенс аргумента arg. |
26 |
широкий арг Вычисляет целочисленное значение шириной не менее 64 бит (по расширению знака, если arg — 32-битное число) для аргумента arg, если оно еще не было. |
абс арг
Рассчитывает абсолютное значение арг.
Acos Arg
Рассчитывает арккозин арг.
Асин Арг
Рассчитывает арксинус арг.
Атан Арг
Рассчитывает арктангенс арг.
atan2 yx
Вычисляет арктангенс фактора его аргументов (у / х).
Ceil Arg
Вычисляет наименьшее целое число, большее или равное числу.
потому что арг
Рассчитывает косинус арг.
Кош Арг
Рассчитывает гиперболический косинус арг.
двойной арг
Вычисляет, является ли arg значением с плавающей точкой, возвращает arg, в противном случае преобразует arg в число с плавающей точкой и возвращает преобразованное значение.
Exp Arg
Вычисляет экспоненциальную функцию (е возводится в степень аргумента).
пол арг
Вычисляет наибольшее целое число, меньшее или равное arg.
FMOD XY
Вычисляет остаток с плавающей точкой от деления x на y. Если y равно 0, возвращается ошибка.
гипотеза ху
Вычисляет длину гипотенузы прямоугольного треугольника sqrt (x * x + y * y).
Int Arg
Вычисляет, является ли arg целочисленным значением той же ширины, что и машинное слово, возвращает arg, в противном случае arg преобразуется в целое число.
лог арг
Рассчитывает натуральный логарифм арг.
log10 arg
Рассчитывает основание 10 логарифм аргумента.
Pow XY
Вычисляет значение x, возведенное в степень y. Если x отрицательно, y должно быть целочисленным значением.
рант
Вычисляет псевдослучайное число от 0 до 1.
круглый арг
Вычисляет значение arg, округленное до ближайшего целого числа.
грешник
Рассчитывает синус арг.
синх арг
Рассчитывает гиперболический синус арг.
sqrt arg
Рассчитывает квадратный корень из арг. аргумент должен быть положительным.
Srand Arg
Вычисляет псевдослучайное число между 0 и 1. Аргумент, который должен быть целым числом, используется для сброса начального числа для генератора случайных чисел rand.
Tan Arg
Рассчитывает тангенс арг.
Тан Арг
Вычисляет гиперболический тангенс аргумента arg.
широкий арг
Вычисляет целочисленное значение шириной не менее 64 бит (по расширению знака, если arg — 32-битное число) для аргумента arg, если оно еще не было.
Некоторые примеры использования математических функций приведены ниже —
#!/usr/bin/tclsh namespace import ::tcl::mathfunc::* puts [tan 10] puts [pow 10 2] puts [ceil 10.34] puts [hypot 10 20] puts [srand 45] puts [log 10] puts [srand 45]
Когда приведенный выше код выполняется, он дает следующий результат —
0.6483608274590866 100.0 11.0 22.360679774997898 0.0003521866166741525 2.302585092994046 0.0003521866166741525
Системные функции
Важные системные функции в Tcl включают в себя:
-
часы — функция секунд, которая возвращает текущее время в секундах.
-
часы — функция форматирования, которая форматирует секунды в дату и время.
-
clock — функция сканирования, которая сканирует входную строку и преобразует ее в секунды.
-
open — функция, которая используется для открытия файла.
-
exec — функция, которая используется для выполнения системной команды.
-
close — функция, которая используется для закрытия файла.
часы — функция секунд, которая возвращает текущее время в секундах.
часы — функция форматирования, которая форматирует секунды в дату и время.
clock — функция сканирования, которая сканирует входную строку и преобразует ее в секунды.
open — функция, которая используется для открытия файла.
exec — функция, которая используется для выполнения системной команды.
close — функция, которая используется для закрытия файла.
Некоторые примеры вышеуказанных функций перечислены ниже —
#!/usr/bin/tclsh #get seconds set currentTime [clock seconds] puts $currentTime #get format puts "The time is: [clock format $currentTime -format %H:%M:%S]" puts "The date is: [clock format $currentTime -format %D]" set date "Jun 15, 2014" puts [clock scan $date -format {%b %d, %Y}] puts [exec ls] puts [exec dir] set a [open input.txt] puts [read $a]; puts $a close $a
Когда приведенный выше код выполняется, он дает следующий результат —
1402819756 The time is: 03:09:16 The date is: 06/15/2014 1402808400 input.txt main.tcl input.txt main.tcl This is the file you can use to provide input to your program and later on open it inside your program to process the input. file3
В следующей таблице приведены строки списка, которые можно использовать для форматирования даты и времени.
Sr.No. | Формат и описание |
---|---|
1 |
% в День в короткой форме, например: Солнце. |
2 |
% A День в полной форме, например: воскресенье. |
3 |
% б Месяц в короткой форме. |
4 |
% В Месяц в полной форме. |
5 |
% d День месяца |
6 |
% J Юлианский день года. |
7 |
% м Месяц в номере. |
8 |
% г Год из двух цифр. |
9 |
% Y Год в четыре цифры. |
10 |
%ЧАС Час в 24 часах. |
11 |
%Я Час в 12 часовых часах. |
12 |
% M Протокол. |
13 |
% S Секунды. |
14 |
%п До или после полудня. |
15 |
% D Дата в номере, мм / дд / гг. |
16 |
%р Время в 12 часовых часах. |
17 |
%Р Время в 24 часовых часах без секунд. |
18 |
% Т Время в 24 часовых часах с секундами. |
19 |
% Z Название часового пояса, как GMT, IST, EST и так далее. |
% в
День в короткой форме, например: Солнце.
% A
День в полной форме, например: воскресенье.
% б
Месяц в короткой форме.
% В
Месяц в полной форме.
% d
День месяца
% J
Юлианский день года.
% м
Месяц в номере.
% г
Год из двух цифр.
% Y
Год в четыре цифры.
%ЧАС
Час в 24 часах.
%Я
Час в 12 часовых часах.
% M
Протокол.
% S
Секунды.
%п
До или после полудня.
% D
Дата в номере, мм / дд / гг.
%р
Время в 12 часовых часах.
%Р
Время в 24 часовых часах без секунд.
% Т
Время в 24 часовых часах с секундами.
% Z
Название часового пояса, как GMT, IST, EST и так далее.
Tcl — регулярные выражения
Команда «regexp» используется для соответствия регулярному выражению в Tcl. Регулярное выражение — это последовательность символов, которая содержит шаблон поиска. Он состоит из нескольких правил, и следующая таблица объясняет эти правила и их соответствующее использование.
Sr.No. | Правило и описание |
---|---|
1 |
Икс Полное совпадение. |
2 |
[AZ] Любая строчная буква от аз. |
3 |
, Любой персонаж. |
4 |
^ Начальная строка должна совпадать. |
5 |
$ Конечная строка должна совпадать. |
6 |
\ ^ Последовательность люфта для соответствия специальному символу ^. Аналогично вы можете использовать для других символов. |
7 |
() Добавьте вышеуказанные последовательности в круглые скобки, чтобы сделать регулярное выражение. |
8 |
Икс* Должно совпадать с 0 или более вхождениями предыдущего x. |
9 |
х & плюс; Должно совпадать с 1 или более вхождениями предыдущего x. |
10 |
[AZ]? Должно совпадать с 0 или 1 вхождением предыдущего x. |
11 |
{разряд} Совпадает точно с цифрами вхождения предыдущего выражения регулярного выражения. Цифра, которая содержит 0-9. |
12 |
{цифра} Соответствует 3 или более разрядам предыдущего выражения регулярного выражения. Цифра, которая содержит 0-9. |
13 |
{Digit1, digit2} Вхождения соответствуют диапазону между цифрами 1 и 2 в предыдущем выражении регулярного выражения. |
Икс
Полное совпадение.
[AZ]
Любая строчная буква от аз.
,
Любой персонаж.
^
Начальная строка должна совпадать.
$
Конечная строка должна совпадать.
\ ^
Последовательность люфта для соответствия специальному символу ^. Аналогично вы можете использовать для других символов.
()
Добавьте вышеуказанные последовательности в круглые скобки, чтобы сделать регулярное выражение.
Икс*
Должно совпадать с 0 или более вхождениями предыдущего x.
х & плюс;
Должно совпадать с 1 или более вхождениями предыдущего x.
[AZ]?
Должно совпадать с 0 или 1 вхождением предыдущего x.
{разряд}
Совпадает точно с цифрами вхождения предыдущего выражения регулярного выражения. Цифра, которая содержит 0-9.
{цифра}
Соответствует 3 или более разрядам предыдущего выражения регулярного выражения. Цифра, которая содержит 0-9.
{Digit1, digit2}
Вхождения соответствуют диапазону между цифрами 1 и 2 в предыдущем выражении регулярного выражения.
Синтаксис
Синтаксис для регулярных выражений приведен ниже —
regexp optionalSwitches patterns searchString fullMatch subMatch1 ... subMatchn
Здесь регулярное выражение является командой. О дополнительных переключателях мы увидим позже. Шаблоны — это правила, упомянутые ранее. Строка поиска — это фактическая строка, в которой выполняется регулярное выражение. Полное совпадение — это любая переменная, в которой содержится результат сопоставленного результата регулярного выражения. Submatch1 to SubMatchn — это необязательная переменная subMatch, которая содержит результат шаблонов субсовпадений.
Давайте рассмотрим несколько простых примеров, прежде чем углубляться в сложные. Простой пример для строки с любыми алфавитами. При обнаружении любого другого символа в регулярном выражении поиск будет остановлен и возвращен.
#!/usr/bin/tclsh regexp {([A-Z,a-z]*)} "Tcl Tutorial" a b puts "Full Match: $a" puts "Sub Match1: $b"
Когда приведенный выше код выполняется, он дает следующий результат —
Full Match: Tcl Sub Match1: Tcl
Несколько шаблонов
В следующем примере показано, как искать несколько шаблонов. Это пример шаблона для любых алфавитов, за которыми следует любой символ, за которым следуют любые алфавиты.
#!/usr/bin/tclsh regexp {([A-Z,a-z]*).([A-Z,a-z]*)} "Tcl Tutorial" a b c puts "Full Match: $a" puts "Sub Match1: $b" puts "Sub Match2: $c"
Когда приведенный выше код выполняется, он дает следующий результат —
Full Match: Tcl Tutorial Sub Match1: Tcl Sub Match2: Tutorial
Ниже показана модифицированная версия приведенного выше кода, показывающая, что подшаблон может содержать несколько шаблонов.
#!/usr/bin/tclsh regexp {([A-Z,a-z]*.([A-Z,a-z]*))} "Tcl Tutorial" a b c puts "Full Match: $a" puts "Sub Match1: $b" puts "Sub Match2: $c"
Когда приведенный выше код выполняется, он дает следующий результат —
Full Match: Tcl Tutorial Sub Match1: Tcl Tutorial Sub Match2: Tutorial
Переключатели для Regex Command
Список переключателей, доступных в Tcl,
-
nocase — используется для игнорирования регистра
-
индексы — Храните расположение совпадающих подшаблонов вместо совпадающих символов.
-
line — Новая строка, чувствительная к совпадению. Игнорирует символы после новой строки.
-
начальный индекс — устанавливает смещение начала шаблона поиска.
-
Отмечает конец выключателей
nocase — используется для игнорирования регистра
индексы — Храните расположение совпадающих подшаблонов вместо совпадающих символов.
line — Новая строка, чувствительная к совпадению. Игнорирует символы после новой строки.
начальный индекс — устанавливает смещение начала шаблона поиска.
Отмечает конец выключателей
В приведенных выше примерах я намеренно использовал [AZ, az] для всех алфавитов, вы можете легко использовать -nocase вместо того, как показано ниже —
#!/usr/bin/tclsh regexp -nocase {([A-Z]*.([A-Z]*))} "Tcl Tutorial" a b c puts "Full Match: $a" puts "Sub Match1: $b" puts "Sub Match2: $c"
Когда приведенный выше код выполняется, он дает следующий результат —
Full Match: Tcl Tutorial Sub Match1: Tcl Tutorial Sub Match2: Tutorial
Другой пример использования переключателей показан ниже —
#!/usr/bin/tclsh regexp -nocase -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b puts "Full Match: $a" puts "Sub Match1: $b" regexp -nocase -start 4 -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b puts "Full Match: $a" puts "Sub Match1: $b"
Когда приведенный выше код выполняется, он дает следующий результат —
Full Match: Tcl Sub Match1: Tcl Full Match: Tutorial Sub Match1: Tutorial
Тк — Обзор
Tk относится к Toolkit и предоставляет кроссплатформенные виджеты GUI, которые помогают вам в создании графического интерфейса пользователя. Он был разработан как расширение языка сценариев Tcl Джоном Оустерхаутом. Tk оставался в разработке независимо от Tcl, причем версии отличались друг от друга, до этого он был синхронизирован с Tcl в v8.0.
Особенности Тк
Это кроссплатформенный с поддержкой операционных систем Linux, Mac OS, Unix и Microsoft Windows.
- Это открытый источник.
- Это обеспечивает высокий уровень расширяемости.
- Это настраиваемо.
- Это настраивается.
- Предоставляет большое количество виджетов.
- Он может использоваться с другими динамическими языками, а не только с Tcl.
- GUI выглядит одинаково на разных платформах.
Приложения, построенные в Tk
Большие успешные приложения были построены в Tcl / Tk.
- Пользовательский интерфейс Dashboard Soft
- Формы GUI для реляционных БД
- Специальный графический интерфейс для реляционной БД
- Программно-аппаратный дизайн системы
- Xtask — Управление задачами
- Музыковедение с Tcl и Tk
- Календарное приложение
- Тк почта
- ТК Отладчик
Tk — Окружающая среда
Как правило, все Mac и Linux Mac поставляются с предустановленной Tk. В случае, если он недоступен или вам нужна последняя версия, возможно, вам придется установить ее. Windows не поставляется с Tcl / Tk, и вам может потребоваться использовать его конкретный двоичный файл для его установки.
ТЗ Переводчик
Это небольшая программа, которая позволяет вам вводить команды Tk и выполнять их построчно. Он останавливает выполнение файла tcl в случае, если он сталкивается с ошибкой, в отличие от компилятора, который выполняется полностью.
Давайте создадим файл helloWorld.tcl следующим образом. Мы будем использовать это в качестве первой программы, работающей на выбранной вами платформе.
#!/usr/bin/wish grid [ttk::button .mybutton -text "Hello World"]
В следующем разделе объясняется только, как установить Tcl / Tk на каждую из доступных платформ.
Установка на Windows
Загрузите последнюю версию для установщика Windows из списка доступных двоичных файлов Active Tcl / Tk. Активная версия сообщества Tcl / Tk бесплатна для личного использования.
Запустите загруженный исполняемый файл, чтобы установить Tcl и Tk, что можно сделать, следуя инструкциям на экране.
Теперь мы можем построить и запустить файл Tcl, скажем helloWorld.tcl, переключившись на папку, содержащую файл, используя cd, а затем выполнив следующий шаг —
C:\Tcl> wish helloWorld.tcl
Нажмите ввод, и мы увидим вывод, как показано ниже —
Установка в Linux
Большинство операционных систем Linux поставляется со встроенным Tk, и вы можете сразу же начать работу в этих системах. В случае, если он недоступен, вы можете использовать следующую команду для загрузки и установки Tcl-Tk.
$ yum install tcl tk
Теперь мы можем создать и запустить файл Tcl, скажем helloWorld.tcl, переключившись на папку, содержащую файл, с помощью команды cd, а затем выполнив следующий шаг —
$ wish helloWorld.tcl
Нажмите ввод, и мы увидим вывод, похожий на следующий —
Установка в системах на основе Debian
В случае, если он недоступен в вашей операционной системе, вы можете использовать следующую команду для загрузки и установки Tcl-Tk —
$ sudo apt-get install tcl tk
Теперь мы можем создать и запустить файл Tcl, скажем helloWorld.tcl, переключившись на папку, содержащую файл, с помощью команды cd, а затем выполнив следующие шаги:
$ wish helloWorld.tcl
Нажмите ввод, и мы увидим вывод, похожий на следующий —
Установка в Mac OS X
Загрузите последнюю версию пакета для Mac OS X из списка доступных двоичных файлов Active Tcl / Tk. Active Tcl Community Edition является бесплатной для личного использования.
Запустите загруженный исполняемый файл, чтобы установить Active Tcl, что можно сделать, следуя инструкциям на экране.
Теперь мы можем создать и запустить файл Tcl, скажем helloWorld.tcl, переключившись на папку, содержащую файл, с помощью команды cd, а затем выполнив следующий шаг —
$ wish helloWorld.tcl
Нажмите ввод, и мы увидим вывод, как показано ниже —
Установка из исходных файлов
Вы можете использовать опцию установки из исходных файлов, когда двоичный пакет недоступен. Обычно предпочтительно использовать двоичные файлы Tk для Windows и Mac OS X, поэтому ниже показана только компиляция исходных текстов в системе на основе Unix —
-
Загрузите исходные файлы.
-
Теперь используйте следующие команды для извлечения, компиляции и сборки после переключения в загруженную папку.
Загрузите исходные файлы.
Теперь используйте следующие команды для извлечения, компиляции и сборки после переключения в загруженную папку.
$ tar zxf tk8.6.1-src.tar.gz $ cd tcl8.6.1 $ cd unix $ ./configure —with-tcl=../../tcl8.6.1/unix —prefix=/opt —enable-gcc $ make $ sudo make install
Примечание. Убедитесь, что вы изменили имя файла на версию, загруженную по командам 1 и 2, указанным выше.
Tk — специальные переменные
В Tk мы классифицируем некоторые переменные как специальные переменные, и они имеют предопределенное использование / функциональность. Список специальных переменных приведен ниже.
Sr.No. | Специальная переменная и описание |
---|---|
1 |
tk_library Используется для настройки расположения стандартных библиотек Tk. |
2 |
tk_patchLevel Относится к текущему уровню патча интерпретатора Tk. |
3 |
tk_strictMotif Когда он не равен нулю, Tk старается придерживаться стиля и стиля Motif как можно ближе. |
4 |
tk_version Отображает версию Tk. |
tk_library
Используется для настройки расположения стандартных библиотек Tk.
tk_patchLevel
Относится к текущему уровню патча интерпретатора Tk.
tk_strictMotif
Когда он не равен нулю, Tk старается придерживаться стиля и стиля Motif как можно ближе.
tk_version
Отображает версию Tk.
Указанные выше специальные переменные имеют свои особые значения для интерпретатора Tk.
Примеры использования специальных переменных Tk
Давайте посмотрим примеры для специальных переменных.
ТК ВЕРСИЯ
#!/usr/bin/wish puts $tk_version
Когда вы запустите программу, вы получите похожий вывод, как показано ниже.
8.5
TK БИБЛИОТЕКА ПУТЬ
#!/usr/bin/wish puts $tk_library
Когда вы запустите программу, вы получите похожий вывод, как показано ниже.
/Library/Frameworks/Tk.framework/Versions/8.6/Resources/Scripts
TK PATCH LEVEL
#!/usr/bin/wish puts $tk_patchLevel
Когда вы запустите программу, вы получите похожий вывод, как показано ниже.
8.6.1
ТК СТРИКТМОТИФ
#!/usr/bin/wish puts $tk_strictMotif
Когда вы запустите программу, вы получите похожий вывод, как показано ниже.
0
Tk — Обзор виджетов
Основной компонент приложения на основе Tk называется виджетом. Компонент также иногда называют окном, поскольку в Tk «окно» и «виджет» часто используются взаимозаменяемо. Tk — это пакет, который предоставляет богатый набор графических компонентов для создания графических приложений с Tcl.
Tk предоставляет широкий спектр виджетов, начиная от основных графических виджетов, таких как кнопки и меню, и заканчивая виджетами отображения данных. Виджеты очень настраиваемы, так как имеют конфигурации по умолчанию, что делает их простыми в использовании.
Приложения Tk следуют иерархии виджетов, где любое количество виджетов может быть размещено в другом виджете, а эти виджеты — в другом виджете. Основной виджет в программе Tk называется корневым виджетом и может быть создан путем создания нового экземпляра класса TkRoot.
Создание виджета
Синтаксис для создания виджета приведен ниже.
type variableName arguments options
Тип здесь относится к типу виджета, такому как кнопка, метка и т. Д. Аргументы могут быть необязательными и обязательными в зависимости от индивидуального синтаксиса каждого виджета. Параметры варьируются от размера до форматирования каждого компонента.
Соглашение об именовании виджетов
Виджет использует структуру, аналогичную именованию пакетов. В Tk корневое окно именуется точкой (.) И элементом в окне, например кнопка называется .myButton1. Имя переменной должно начинаться со строчной буквы, цифры или знака пунктуации (кроме точки). После первого символа другие символы могут быть прописными или строчными буквами, цифрами или знаками препинания (кроме точек). Рекомендуется использовать строчную букву, чтобы начать метку.
Соглашение о присвоении цветов
Цвета могут быть объявлены с использованием имени, такого как красный, зеленый и т. Д. Он также может использовать шестнадцатеричное представление с #. Количество шестнадцатеричных цифр может быть 3, 6, 9 или 12.
Конвенция по измерениям
Единицей по умолчанию являются пиксели, и она используется, когда мы не указываем размер. Другие размеры: i для дюймов, m для миллиметров, c для сантиметров и p для точек.
Общие параметры
Существует так много общих параметров, доступных для всех виджетов, и они перечислены ниже в следующей таблице:
Sr.No. | Синтаксис и описание |
---|---|
1 |
-фоновый цвет Используется для установки цвета фона для виджета. |
2 |
ширина полосы Используется для рисования с рамкой в 3D-эффектах. |
3 |
-font fontDescriptor Используется для установки шрифта для виджета. |
4 |
цвет переднего плана Используется для установки цвета переднего плана для виджета. |
5 |
высот Используется для установки высоты для виджета. |
6 |
-светлый фоновый цвет Используется для установки цветного прямоугольника для рисования вокруг виджета, когда виджет не имеет фокуса ввода. |
7 |
-светлый цвет Используется для установки цветного прямоугольника для рисования вокруг виджета, когда виджет имеет фокус ввода. |
8 |
-адрес номер Устанавливает padx для виджета. |
9 |
-падый номер Устанавливает пади для виджета. |
10 |
состояние Устанавливает 3D рельеф для этого виджета. Условие может быть приподнятым, утопленным, плоским, ребристым, твердым или желобчатым. |
11 |
текст Устанавливает текст для виджета. |
12 |
-textvariable varName Переменная, связанная с виджетом. Когда текст виджета изменяется, переменная устанавливается с текстом виджета. |
13 |
номер Устанавливает ширину для виджета. |
-фоновый цвет
Используется для установки цвета фона для виджета.
ширина полосы
Используется для рисования с рамкой в 3D-эффектах.
-font fontDescriptor
Используется для установки шрифта для виджета.
цвет переднего плана
Используется для установки цвета переднего плана для виджета.
высот
Используется для установки высоты для виджета.
-светлый фоновый цвет
Используется для установки цветного прямоугольника для рисования вокруг виджета, когда виджет не имеет фокуса ввода.
-светлый цвет
Используется для установки цветного прямоугольника для рисования вокруг виджета, когда виджет имеет фокус ввода.
-адрес номер
Устанавливает padx для виджета.
-падый номер
Устанавливает пади для виджета.
состояние
Устанавливает 3D рельеф для этого виджета. Условие может быть приподнятым, утопленным, плоским, ребристым, твердым или желобчатым.
текст
Устанавливает текст для виджета.
-textvariable varName
Переменная, связанная с виджетом. Когда текст виджета изменяется, переменная устанавливается с текстом виджета.
номер
Устанавливает ширину для виджета.
Простой пример для вариантов показан ниже.
#!/usr/bin/wish grid [label .myLabel -background red -text "Hello World" -relief ridge -borderwidth 3] -padx 100 -pady 100
Когда мы запустим вышеуказанную программу, мы получим следующий вывод.
Список доступных виджетов категоризирован ниже —
Основные виджеты
Sr.No. | Виджет и описание |
---|---|
1 |
этикетка Виджет для отображения одной строки текста. |
2 |
кнопка Виджет, который кликабелен и запускает действие. |
3 |
запись Виджет раньше принимал одну строку текста в качестве ввода. |
4 |
Сообщение Виджет для отображения нескольких строк текста. |
5 |
Текст Виджет для отображения и при необходимости редактирования нескольких строк текста. |
6 |
Верхний уровень Окно со всеми границами и украшениями, предоставляемыми менеджером окон. |
этикетка
Виджет для отображения одной строки текста.
кнопка
Виджет, который кликабелен и запускает действие.
запись
Виджет раньше принимал одну строку текста в качестве ввода.
Сообщение
Виджет для отображения нескольких строк текста.
Текст
Виджет для отображения и при необходимости редактирования нескольких строк текста.
Верхний уровень
Окно со всеми границами и украшениями, предоставляемыми менеджером окон.
Виджеты макетов
Sr.No. | Виджет и описание |
---|---|
1 |
Рамка Контейнерный виджет для хранения других виджетов. |
2 |
Место Виджет для хранения других виджетов в определенном месте с координатами его происхождения и точного размера. |
3 |
пак Простой виджет для организации виджетов по блокам перед размещением их в родительском виджете. |
4 |
сетка Виджет для размещения упаковки виджетов в разных направлениях. |
Рамка
Контейнерный виджет для хранения других виджетов.
Место
Виджет для хранения других виджетов в определенном месте с координатами его происхождения и точного размера.
пак
Простой виджет для организации виджетов по блокам перед размещением их в родительском виджете.
сетка
Виджет для размещения упаковки виджетов в разных направлениях.
Выбор виджетов
Sr.No. | Виджет и описание |
---|---|
1 |
Переключатель Виджет, который имеет набор кнопок включения / выключения и метки, одна из которых может быть выбрана. |
2 |
Checkbutton Виджет, который имеет набор кнопок включения / выключения и метки, многие из которых могут быть выбраны .. |
3 |
Меню Виджет, который выступает в качестве держателя для пунктов меню. |
4 |
Listbox Виджет, который отображает список ячеек, одну или несколько из которых можно выбрать. |
Переключатель
Виджет, который имеет набор кнопок включения / выключения и метки, одна из которых может быть выбрана.
Checkbutton
Виджет, который имеет набор кнопок включения / выключения и метки, многие из которых могут быть выбраны ..
Меню
Виджет, который выступает в качестве держателя для пунктов меню.
Listbox
Виджет, который отображает список ячеек, одну или несколько из которых можно выбрать.
Мега Виджеты
Sr.No. | Виджет и описание |
---|---|
1 |
диалог Виджет для отображения диалоговых окон. |
2 |
со счётчиком Виджет, который позволяет пользователям выбирать номера. |
3 |
Поле со списком Виджет, который сочетает в себе запись со списком вариантов, доступных для использования. |
4 |
Ноутбук Виджет с вкладками, который помогает переключаться между одной из нескольких страниц, используя вкладку указателя. |
5 |
Индикатор Виджет для визуальной обратной связи с ходом длительной операции, такой как загрузка файла. |
6 |
В виде дерева Виджет для отображения и позволяет просматривать иерархию элементов более в виде дерева. |
7 |
Полоса прокрутки Прокрутка виджетов без текстовых или холст виджетов. |
8 |
Масштаб Масштабируйте виджет, чтобы выбрать числовое значение с помощью ползунков. |
диалог
Виджет для отображения диалоговых окон.
со счётчиком
Виджет, который позволяет пользователям выбирать номера.
Поле со списком
Виджет, который сочетает в себе запись со списком вариантов, доступных для использования.
Ноутбук
Виджет с вкладками, который помогает переключаться между одной из нескольких страниц, используя вкладку указателя.
Индикатор
Виджет для визуальной обратной связи с ходом длительной операции, такой как загрузка файла.
В виде дерева
Виджет для отображения и позволяет просматривать иерархию элементов более в виде дерева.
Полоса прокрутки
Прокрутка виджетов без текстовых или холст виджетов.
Масштаб
Масштабируйте виджет, чтобы выбрать числовое значение с помощью ползунков.
Другие виджеты
Sr.No. | Виджет и описание |
---|---|
1 |
холст Рисование виджета для отображения графики и изображений. |
холст
Рисование виджета для отображения графики и изображений.
Мы рассмотрим каждый из этих виджетов в следующих главах.
Tk — Основные виджеты
Базовые виджеты — это обычные виджеты, доступные практически во всех приложениях Tk. Список доступных основных виджетов приведен ниже —
Sr.No. | Виджеты и описание |
---|---|
1 | этикетка
Виджет для отображения одной строки текста. |
2 | кнопка
Виджет, который кликабелен и запускает действие. |
3 | запись
Виджет раньше принимал одну строку текста в качестве ввода. |
4 | Сообщение
Виджет для отображения нескольких строк текста. |
5 | Текст
Виджет для отображения и при необходимости редактирования нескольких строк текста. |
6 | Верхний уровень
Виджет используется для создания фрейма, который является новым окном верхнего уровня. |
Виджет для отображения одной строки текста.
Виджет, который кликабелен и запускает действие.
Виджет раньше принимал одну строку текста в качестве ввода.
Виджет для отображения нескольких строк текста.
Виджет для отображения и при необходимости редактирования нескольких строк текста.
Виджет используется для создания фрейма, который является новым окном верхнего уровня.
Простой пример Tk показан ниже с использованием основных виджетов —
#!/usr/bin/wish grid [label .myLabel -text "Label Widget" -textvariable labelText] grid [text .myText -width 20 -height 5] .myText insert 1.0 "Text\nWidget\n" grid [entry .myEntry -text "Entry Widget"] grid [message .myMessage -background red -foreground white -text "Message\nWidget"] grid [button .myButton1 -text "Button" -command "set labelText clicked"]
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Tk — Виджеты макета
Виджеты макетов используются для обработки макетов для приложения Tk. Виджет фрейма используется для группировки других виджетов, а менеджер мест, пакетов и сетки — это менеджер компоновки, чтобы дать вам полный контроль над добавлением в окна. Список доступных виджетов макета показан ниже:
Sr.No. | Виджеты и описание |
---|---|
1 | Рамка
Контейнерный виджет для хранения других виджетов. |
2 | Место
Виджет для хранения других виджетов в определенном месте с координатами его происхождения и точного размера. |
3 | пак
Простой виджет для организации виджетов по блокам перед размещением их в родительском виджете. |
4 | сетка
Виджет для размещения упаковки виджетов в разных направлениях. |
Контейнерный виджет для хранения других виджетов.
Виджет для хранения других виджетов в определенном месте с координатами его происхождения и точного размера.
Простой виджет для организации виджетов по блокам перед размещением их в родительском виджете.
Виджет для размещения упаковки виджетов в разных направлениях.
Простой пример Tk показан ниже для виджетов макета —
#!/usr/bin/wish frame .myFrame1 -background red -relief ridge -borderwidth 8 -padx 10 -pady 10 -height 100 -width 100 frame .myFrame2 -background blue -relief ridge -borderwidth 8 -padx 10 -pady 10 -height 100 -width 50 pack .myFrame1 pack .myFrame2
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Tk — Выбор виджетов
Виджеты выбора используются для выбора различных параметров в приложении Tk. Список доступных виджетов выбора показан ниже.
Sr.No. | Виджеты и описание |
---|---|
1 | Переключатель
Виджет, который имеет набор кнопок включения / выключения и метки, одна из которых может быть выбрана. |
2 | Checkbutton
Виджет, который имеет набор кнопок включения / выключения и метки, многие из которых могут быть выбраны. |
3 | Меню
Виджет, который выступает в качестве держателя для пунктов меню. |
4 | Listbox
Виджет, который отображает список ячеек, одну или несколько из которых можно выбрать. |
Виджет, который имеет набор кнопок включения / выключения и метки, одна из которых может быть выбрана.
Виджет, который имеет набор кнопок включения / выключения и метки, многие из которых могут быть выбраны.
Виджет, который выступает в качестве держателя для пунктов меню.
Виджет, который отображает список ячеек, одну или несколько из которых можно выбрать.
Простой пример Tk показан ниже с использованием виджетов выбора —
#!/usr/bin/wish grid [frame .gender ] grid [label .label1 -text "Male" -textvariable myLabel1 ] grid [radiobutton .gender.maleBtn -text "Male" -variable gender -value "Male" -command "set myLabel1 Male"] -row 1 -column 2 grid [radiobutton .gender.femaleBtn -text "Female" -variable gender -value "Female" -command "set myLabel1 Female"] -row 1 -column 3 .gender.maleBtn select grid [label .myLabel2 -text "Range 1 not selected" -textvariable myLabelValue2 ] grid [checkbutton .chk1 -text "Range 1" -variable occupied1 -command {if {$occupied1 } { set myLabelValue2 {Range 1 selected} } else { set myLabelValue2 {Range 1 not selected} } }] proc setLabel {text} { .label configure -text $text }
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Tk — Canvas Widgets
Холст используется для предоставления областей рисования. Синтаксис для виджета Canvas показан ниже —
canvas canvasName options
Опции
Параметры, доступные для виджета Canvas, перечислены ниже в следующей таблице:
Sr.No. | Синтаксис и описание |
---|---|
1 |
-фоновый цвет Используется для установки цвета фона для виджета. |
2 |
-близкое расстояние Устанавливает близость курсора мыши к отображаемому элементу. По умолчанию 1,0 пиксель. Это значение может быть дробным и должно быть положительным. |
3 |
-scrollregion boundingBox Ограничительная рамка для общей площади этого холста. |
4 |
высот Используется для установки высоты для виджета. |
5 |
номер Устанавливает ширину для виджета. |
6 |
-xscrollincrement размер Количество для горизонтальной прокрутки при запросе прокрутки. |
7 |
размер Количество для вертикальной прокрутки при запросе прокрутки. |
-фоновый цвет
Используется для установки цвета фона для виджета.
-близкое расстояние
Устанавливает близость курсора мыши к отображаемому элементу. По умолчанию 1,0 пиксель. Это значение может быть дробным и должно быть положительным.
-scrollregion boundingBox
Ограничительная рамка для общей площади этого холста.
высот
Используется для установки высоты для виджета.
номер
Устанавливает ширину для виджета.
-xscrollincrement размер
Количество для горизонтальной прокрутки при запросе прокрутки.
размер
Количество для вертикальной прокрутки при запросе прокрутки.
Простой пример для виджета Canvas показан ниже —
#!/usr/bin/wish canvas .myCanvas -background red -width 100 -height 100 pack .myCanvas
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Виджеты для рисования на холсте
Список доступных виджетов для рисования на холсте приведен ниже —
Sr.No. | Виджет и описание |
---|---|
1 | Линия
Рисует линию. |
2 | дуга
Рисует дугу. |
3 | Прямоугольник
Рисует прямоугольник. |
4 | овальный
Рисует овал. |
5 | многоугольник
Рисует многоугольник. |
6 | Текст
Рисует текст. |
7 | Битовая карта
Рисует растровое изображение. |
8 | Образ
Рисует изображение. |
Рисует линию.
Рисует дугу.
Рисует прямоугольник.
Рисует овал.
Рисует многоугольник.
Рисует текст.
Рисует растровое изображение.
Рисует изображение.
Пример использования различных виджетов Canvas показан ниже —
#!/usr/bin/wish canvas .myCanvas -background red -width 200 -height 200 pack .myCanvas .myCanvas create arc 10 10 50 50 -fill yellow .myCanvas create line 10 30 50 50 100 10 -arrow both -fill yellow -smooth true -splinesteps 2 .myCanvas create oval 50 50 100 80 -fill yellow .myCanvas create polygon 50 150 100 80 120 120 100 190 -fill yellow -outline green .myCanvas create rectangle 150 150 170 170 -fill yellow .myCanvas create text 170 20 -fill yellow -text "Hello" -font {Helvetica -18 bold} .myCanvas create bitmap 180 50 -bitmap info
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Tk — Мега Виджеты
Мега виджеты включают в себя множество сложных виджетов, которые часто требуются в некоторых крупных приложениях Tk. Список доступных мега виджетов приведен ниже.
Sr.No. | Виджет и описание |
---|---|
1 | диалог
Виджет для отображения диалоговых окон. |
2 | со счётчиком
Виджет, который позволяет пользователям выбирать номера. |
3 | Поле со списком
Виджет, который сочетает в себе запись со списком вариантов, доступных для использования. |
4 | Ноутбук
Виджет с вкладками, который помогает переключаться между одной из нескольких страниц, используя вкладку указателя. |
5 | Индикатор
Виджет для визуальной обратной связи с ходом длительной операции, такой как загрузка файла. |
6 | В виде дерева
Виджет для отображения и позволяет просматривать иерархию элементов более в виде дерева. |
7 | Полоса прокрутки
Прокрутка виджетов без текстовых или холст виджетов. |
8 | Масштаб
Масштабируйте виджет, чтобы выбрать числовое значение с помощью ползунков. |
Виджет для отображения диалоговых окон.
Виджет, который позволяет пользователям выбирать номера.
Виджет, который сочетает в себе запись со списком вариантов, доступных для использования.
Виджет с вкладками, который помогает переключаться между одной из нескольких страниц, используя вкладку указателя.
Виджет для визуальной обратной связи с ходом длительной операции, такой как загрузка файла.
Виджет для отображения и позволяет просматривать иерархию элементов более в виде дерева.
Прокрутка виджетов без текстовых или холст виджетов.
Масштабируйте виджет, чтобы выбрать числовое значение с помощью ползунков.
Простой пример Tk показан ниже с использованием нескольких мега-виджетов.
#!/usr/bin/wish ttk::treeview .tree -columns "Creator Year" -displaycolumns "Year Creator" .tree heading Creator -text "Creator" -anchor center .tree heading Year -text "Year" -anchor center pack .tree .tree insert {} end -id Languages -text "Languages" .tree insert Languages end -text C -values [list "Dennis Ritchie" "1990"] proc scaleMe {mywidget scaleValue} { $mywidget configure -length $scaleValue } pack [scale .s2 -from 100.0 -to 200.0 -length 100 -background yellow -borderwidth 5 -font{Helvetica -18 bold} -foreground red -width 40 -relief ridge -orien horizontal -variable a -command "scaleMe .s2" ] pack [ttk::progressbar .p1 -orient horizontal -length 200 -mode indeterminate -value 90] pack [ttk::progressbar .p2 -orient horizontal -length 200 -mode determinate -variable a -maximum 75 -value 20]
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Tk — Шрифты
Есть ряд виджетов, которые поддерживают отображение текста. Большинство из них предоставляет возможность атрибута шрифта. Синтаксис для создания шрифта показан ниже —
font create fontName options
Опции
Параметры, доступные для создания шрифта, перечислены ниже в следующей таблице:
Sr.No. | Синтаксис и описание |
---|---|
1 |
Семейное имя Название семейства шрифтов. |
2 |
размер номера Размер шрифта. |
3 |
уровень веса Вес для шрифта. |
Семейное имя
Название семейства шрифтов.
размер номера
Размер шрифта.
уровень веса
Вес для шрифта.
Простой пример создания шрифта показан ниже —
#!/usr/bin/wish font create myFont -family Helvetica -size 18 -weight bold pack [label .myLabel -font myFont -text "Hello World"]
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Чтобы получить все доступные шрифты, мы можем использовать следующую команду —
#!/usr/bin/wish puts [font families]
Когда мы запустим указанную выше команду, мы получим следующий вывод:
{Abadi MT Condensed Extra Bold} {Abadi MT Condensed Light} {Al Bayan} {Al Nile} {Al Tarikh} {American Typewriter} {Andale Mono} Arial {Arial Black} {Arial Hebrew} {Arial Narrow} {Arial Rounded MT Bold} {Arial Unicode MS} Athelas Avenir {Avenir Next} {Avenir Next Condensed} Ayuthaya Baghdad {Bangla MN} {Bangla Sangam MN} {Baoli SC} Baskerville {Baskerville Old Face} Batang {Bauhaus 93} Beirut {Bell MT} {Bernard MT Condensed} BiauKai {Big Caslon} {Book Antiqua} {Bookman Old Style} {Bookshelf Symbol 7} Braggadocio {Britannic Bold} {Brush Script MT} Calibri {Calisto MT} Cambria {Cambria Math} Candara Century {Century Gothic} {Century Schoolbook} Chalkboard {Chalkboard SE} Chalkduster {Charcoal CY} Charter Cochin {Colonna MT} {Comic Sans MS} Consolas Constantia {Cooper Black} Copperplate {Copperplate Gothic Bold} {Copperplate Gothic Light} Corbel {Corsiva Hebrew} Courier {Courier New} {Curlz MT} Damascus {DecoType Naskh} Desdemona {Devanagari MT} {Devanagari Sangam MN} Didot {DIN Alternate} {DIN Condensed} {Diwan Kufi} {Diwan Thuluth} {Edwardian Script ITC} {Engravers MT} {Euphemia UCAS} Eurostile Farah Farisi {Footlight MT Light} {Franklin Gothic Book} {Franklin Gothic Medium} Futura Gabriola Garamond {GB18030 Bitmap} {Geeza Pro} Geneva {Geneva CY} Georgia {Gill Sans} {Gill Sans MT} {Gloucester MT Extra Condensed} {Goudy Old Style} {Gujarati MT} {Gujarati Sangam MN} Gulim GungSeo {Gurmukhi MN} {Gurmukhi MT} {Gurmukhi Sangam MN} Haettenschweiler {Hannotate SC} {Hannotate TC} {HanziPen SC} {HanziPen TC} Harrington HeadLineA Hei {Heiti SC} {Heiti TC} Helvetica {Helvetica CY} {Helvetica Neue} Herculanum {Hiragino Kaku Gothic Pro} {Hiragino Kaku Gothic ProN} {Hiragino Kaku Gothic Std} {Hiragino Kaku Gothic StdN} {Hiragino Maru Gothic Pro} {Hiragino Maru Gothic ProN} {Hiragino Mincho Pro} {Hiragino Mincho ProN} {Hiragino Sans GB} {Hoefler Text} Impact {Imprint MT Shadow} InaiMathi {Iowan Old Style} Kai Kailasa {Kaiti SC} {Kaiti TC} {Kannada MN} {Kannada Sangam MN} Kefa {Khmer MN} {Khmer Sangam MN} {Kino MT} Kokonor Krungthep KufiStandardGK {Lantinghei SC} {Lantinghei TC} {Lao MN} {Lao Sangam MN} {Libian SC} {LiHei Pro} {LiSong Pro} {Lucida Blackletter} {Lucida Bright} {Lucida Calligraphy} {Lucida Console} {Lucida Fax} {Lucida Grande} {Lucida Handwriting} {Lucida Sans} {Lucida Sans Typewriter} {Lucida Sans Unicode} {Malayalam MN} {Malayalam Sangam MN} Marion {Marker Felt} Marlett {Matura MT Script Capitals} Meiryo Menlo {Microsoft Sans Serif} Mishafi Mistral {Modern No. 20} Monaco {MS Gothic} {MS Mincho} {MS PGothic} {MS PMincho} {MS Reference Sans Serif} {MS Reference Specialty} Mshtakan {MT Extra} Muna {Myanmar MN} {Myanmar Sangam MN} Nadeem {Nanum Brush Script} {Nanum Gothic} {Nanum Myeongjo} {Nanum Pen Script} {New Peninim MT} {News Gothic MT} Noteworthy Onyx Optima {Oriya MN} {Oriya Sangam MN} Osaka Palatino {Palatino Linotype} Papyrus PCMyungjo Perpetua {Perpetua Titling MT} PilGi {Plantagenet Cherokee} Playbill PMingLiU {PT Mono} {PT Sans} {PT Sans Caption} {PT Sans Narrow} {PT Serif} {PT Serif Caption} Raanana Rockwell {Rockwell Extra Bold} Sana Sathu {Savoye LET} Seravek Silom SimSun {Sinhala MN} {Sinhala Sangam MN} Skia {Snell Roundhand} {Songti SC} {Songti TC} Stencil STFangsong STHeiti STIXGeneral STIXIntegralsD STIXIntegralsSm STIXIntegralsUp STIXIntegralsUpD STIXIntegralsUpSm STIXNonUnicode STIXSizeFiveSym STIXSizeFourSym STIXSizeOneSym STIXSizeThreeSym STIXSizeTwoSym STIXVariants STKaiti STSong Superclarendon Symbol Tahoma {Tamil MN} {Tamil Sangam MN} TeamViewer8 {Telugu MN} {Telugu Sangam MN} Thonburi Times {Times New Roman} {Trebuchet MS} {Tw Cen MT} Verdana Waseem {Wawati SC} {Wawati TC} Webdings {Weibei SC} {Weibei TC} {Wide Latin} Wingdings {Wingdings 2} {Wingdings 3} {Xingkai SC} {Yuanti SC} YuGothic YuMincho {Yuppy SC} {Yuppy TC} {Zapf Dingbats} Zapfino {Apple Braille} {Apple Chancery} {Apple Color Emoji} {Apple LiGothic} {Apple LiSung} {Apple SD Gothic Neo} {Apple Symbols} AppleGothic AppleMyungjo {Monotype Corsiva} {Monotype Sorts}
ТК — Изображения
Графический виджет используется для создания и управления изображениями. Синтаксис для создания изображения выглядит следующим образом —
image create type name options
В приведенном выше синтаксисе тип — это фото или растровое изображение, а имя — это идентификатор изображения.
Опции
Параметры, доступные для создания изображения, перечислены ниже в следующей таблице:
Sr.No. | Синтаксис и описание |
---|---|
1 |
-file fileName Имя имени файла изображения. |
2 |
высот Используется для установки высоты для виджета. |
3 |
номер Устанавливает ширину для виджета. |
4 |
строка данных Изображение в кодированной строке base 64. |
-file fileName
Имя имени файла изображения.
высот
Используется для установки высоты для виджета.
номер
Устанавливает ширину для виджета.
строка данных
Изображение в кодированной строке base 64.
Простой пример для виджета изображения показан ниже —
#!/usr/bin/wish image create photo imgobj -file "/Users/rajkumar/Desktop/F Drive/pictur/vb/Forests/ 680049.png" -width 400 -height 400 pack [label .myLabel] .myLabel configure -image imgobj
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Доступные функции для изображения перечислены ниже в следующей таблице —
Sr.No. | Синтаксис и описание |
---|---|
1 |
изображение удалить imageName Удаляет изображение из памяти и связанных виджетов визуально. |
2 |
высота изображения imageName Возвращает высоту для изображения. |
3 |
ширина изображения Возвращает ширину для изображения. |
4 |
тип изображения imageName Возвращает тип для изображения. |
5 |
имена изображений Возвращает список изображений, живущих в памяти. |
изображение удалить imageName
Удаляет изображение из памяти и связанных виджетов визуально.
высота изображения imageName
Возвращает высоту для изображения.
ширина изображения
Возвращает ширину для изображения.
тип изображения imageName
Возвращает тип для изображения.
имена изображений
Возвращает список изображений, живущих в памяти.
Простой пример использования вышеуказанных команд графического виджета показан ниже —
#!/usr/bin/wish image create photo imgobj -file "/Users/rajkumar/images/680049.png" -width 400 -height 400 pack [label .myLabel] .myLabel configure -image imgobj puts [image height imgobj] puts [image width imgobj] puts [image type imgobj] puts [image names] image delete imgobj
Изображение будет удалено визуально и из памяти после выполнения команды «image delete imgobj». В консоли вывод будет выглядеть следующим образом:
400 400 photo imgobj ::tk::icons::information ::tk::icons::error ::tk::icons:: warning ::tk::icons::question
Tk — События
События в простейшем виде обрабатываются с помощью команд. Простой пример обработки события — обработка события кнопкой и показан ниже:
#!/usr/bin/wish proc myEvent { } { puts "Event triggered" } pack [button .myButton1 -text "Button 1" -command myEvent]
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Простая программа для отображения события задержки текстовой анимации показана ниже —
#!/usr/bin/wish proc delay {} { for {set j 0} {$j < 100000} {incr j} {} } label .myLabel -text "Hello................" -width 25 pack .myLabel set str "Hello................" for {set i [string length $str]} {$i > -2} {set i [expr $i-1]} { .myLabel configure -text [string range $str 0 $i] update delay }
Когда мы запустим программу, мы получим следующий вывод в анимированном виде —
Событие после задержки
Синтаксис для события после задержки показан ниже —
after milliseconds number command
Простая программа для отображения после события задержки показана ниже —
#!/usr/bin/wish proc addText {} { label .myLabel -text "Hello................" -width 25 pack .myLabel } after 1000 addText
Когда мы запустим программу, через одну секунду мы получим следующий вывод:
Вы можете отменить событие, используя команду после отмены, как показано ниже —
#!/usr/bin/wish proc addText {} { label .myLabel -text "Hello................" -width 25 pack .myLabel } after 1000 addText after cancel addText
Привязка событий
Синтаксис для привязки событий, как показано ниже —
bind arguments
Пример событий клавиатуры
#!/usr/bin/wish bind . {puts "Key Pressed: %K "}
Когда мы запустим программу и нажмем букву X, мы получим следующий вывод:
Key Pressed: X
Пример событий мыши
#!/usr/bin/wish bind . {puts "Button %b Pressed : %x %y "}
Когда мы запустим программу и нажмем левую кнопку мыши, мы получим вывод, подобный следующему:
Button 1 Pressed : 89 90
Пример привязки событий с помощью кнопки
#!/usr/bin/wish proc myEvent { } { puts "Event triggered" } pack [button .myButton1 -text "Button 1" -command myEvent] bind . ".myButton1 invoke"
Когда мы запустим программу и нажмем ввод, мы получим следующий вывод:
Event triggered
Tk — Windows Manager
Диспетчер окон используется для обработки окна верхнего уровня. Это помогает в управлении размером, положением и другими атрибутами окна. В тк. используется для ссылки на главное окно. Синтаксис для оконной команды показан ниже —
wm option window arguments
Список параметров, доступных для команды Tk wm, показан в следующей таблице:
Sr.No. | Синтаксис и описание |
---|---|
1 |
аспект windowName abcd Пытается сохранить соотношение ширины / высоты между a / b и c / d. |
2 |
Окно геометрииНаименование геометрииПарамы Используйте, чтобы установить геометрию для окна. |
3 |
имя окна сетки wh dx dy Устанавливает размер сетки. |
4 |
группа windowName leaderName leaderName дает лидер группы связанных окон. |
5 |
deiconify windowName Приводит экран в нормальное состояние, если его свернуть. |
6 |
iconify windowName Минимизирует окно. |
7 |
состояние windowName Возвращает текущее состояние окна. |
8 |
снять имя окна Разбирает окно и удаляет его детали в памяти. |
9 |
iconbitmap windowName изображение Устанавливает или возвращает растровое изображение значка. |
10 |
iconPhoto windowName image Устанавливает или возвращает значок фото. |
11 |
команда windowName commandString Записывает команду запуска в свойстве WM_COMMAND. |
12 |
аргументы протокола windowName Зарегистрируйте команду для обработки имени запроса протокола, которое может быть WM_DELETE_WINDOW, WM_SAVE_YOURSELF, WM_TAKE_FOCUS. Например: протокол wm. WM_DELETE_WINDOW Выход. |
13 |
minsize windowName size Определяет минимальный размер окна. |
14 |
maxsize windowName size Определяет максимальный размер окна. |
15 |
title windowName titleText Определяет заголовок окна. |
16 |
Атрибуты subOptions Доступно множество атрибутов, таких как альфа, полный экран и так далее. |
аспект windowName abcd
Пытается сохранить соотношение ширины / высоты между a / b и c / d.
Окно геометрииНаименование геометрииПарамы
Используйте, чтобы установить геометрию для окна.
имя окна сетки wh dx dy
Устанавливает размер сетки.
группа windowName leaderName
leaderName дает лидер группы связанных окон.
deiconify windowName
Приводит экран в нормальное состояние, если его свернуть.
iconify windowName
Минимизирует окно.
состояние windowName
Возвращает текущее состояние окна.
снять имя окна
Разбирает окно и удаляет его детали в памяти.
iconbitmap windowName изображение
Устанавливает или возвращает растровое изображение значка.
iconPhoto windowName image
Устанавливает или возвращает значок фото.
команда windowName commandString
Записывает команду запуска в свойстве WM_COMMAND.
аргументы протокола windowName
Зарегистрируйте команду для обработки имени запроса протокола, которое может быть WM_DELETE_WINDOW,
WM_SAVE_YOURSELF,
WM_TAKE_FOCUS. Например: протокол wm.
WM_DELETE_WINDOW Выход.
minsize windowName size
Определяет минимальный размер окна.
maxsize windowName size
Определяет максимальный размер окна.
title windowName titleText
Определяет заголовок окна.
Атрибуты subOptions
Доступно множество атрибутов, таких как альфа, полный экран и так далее.
Некоторые из приведенных выше команд используются в следующем примере:
#!/usr/bin/wish wm maxsize . 800 800 wm minsize . 300 300 wm title . "Hello" wm attributes . -alpha ".90" wm geometry . 300x200+100+100
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Как видите, альфа является одним из доступных атрибутов. Список часто используемых подкоманд приведен ниже —
Sr.No. | Синтаксис и описание |
---|---|
1 |
альфа-число Устанавливает альфа для окна. |
2 |
-полный экран номер Число может быть 0 для обычного экрана или 1 для полного экрана. |
3 |
верхнее число Устанавливает или возвращает, является ли окно самым верхним. Значение может быть 0 или 1. |
альфа-число
Устанавливает альфа для окна.
-полный экран номер
Число может быть 0 для обычного экрана или 1 для полного экрана.
верхнее число
Устанавливает или возвращает, является ли окно самым верхним. Значение может быть 0 или 1.
Создание окна
Мы можем использовать команду toplevel для создания окна, и пример показан ниже —
#!/usr/bin/wish toplevel .t
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Разрушающее Окно
Мы можем использовать команду destroy, чтобы уничтожить окно, и пример показан ниже —
#!/usr/bin/wish destroy .t
Приведенная выше команда уничтожит окно с именем .t .
ТК — менеджер по геометрии
Менеджер геометрии используется для управления геометрией окна и других фреймов. Мы можем использовать его для обработки положения и размера окна и фреймов. Виджеты макета используются для этой цели.
Расположение и размер
Синтаксис окна позиционирования и размеров показан ниже —
wm geometry . wxh+/-x+/-y
Здесь w относится к ширине, а h относится к высоте. За ним следует знак «+» или «-» с номером, следующим за позицией х на экране. Точно так же следующий знак «+» или «-» с номером относится к позиции y на экране.
Простой пример показан ниже для приведенного выше утверждения -.
#!/usr/bin/wish wm geometry . 300x200+100+100
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —
Сетка Геометрия
Синтаксис для геометрии сетки показан ниже —
grid gridName -column number -row number -columnspan number -rowspan number
Столбец, строка, столбец или строка строк помогает в обеспечении геометрии сетки.
Простой пример показан ниже для приведенного выше утверждения —
#!/usr/bin/wish frame .myFrame1 -background red -height 100 -width 100 frame .myFrame2 -background blue -height 100 -width 50 grid .myFrame1 -columnspan 10 -rowspan 10 -sticky w grid .myFrame2 -column 10 -row 2
Когда мы запустим вышеупомянутую программу, мы получим следующий вывод —