понедельник, 19 ноября 2012 г.

Tk Tutorial (rus) / Руководство по Tk.



Эта статья является любительским переводом этой статьи. Не стоит рассчитывать на 100% точность перевода. Кстати, нет возможности подсвечивать синтаксис Tcl, извините. Сейчас статья еще в процессе перевода, и в основном переводится только советы для Python. 
Содержание


Введение

Руководство разработано для помощи людям быстро освоить построение основного настольного пользовательского интерфейса с Tk, и в частности Tk 8.5, который является необычайно важным этапом в развитии проекта и сильно отличается от более старых версий Tk, которые широко известны народу.

Обратной сторона медали в том, что пока вы не знаете одну или две частные вещи, это фактически не означает значимость выпуска. По причинам обратной совместимости, пока в существующие программы не будут внесены изменения, они не станут сильно отличаться по виду. Таким образом, хотя это руководство безусловно окажется выгодным новичкам Tk, это также поможет существующим Tk разработчикам обновить свои знания. Это клише, но я не могу поверить, как много я узнал в написании этого руководства, и я использую Tk более пятнадцати лет.

Общее состояние документации Tk (вне Tcl-ориентированной справочной документации, которая превосходна), к сожалению, не на высоком уровне в настоящее время. Это особенно верно для разработчиков, использующих Tk из иных языков, чем Tcl, и разработчиков, работающих на различных платформах.

Что ж, это руководство, насколько это возможно, нацеливает разработчиков на три главные платформы (Windows, Mac, Linux), и также быть независимым от языка. Первоначально учебник будет охватывать Tcl, Ruby, Perl и Python. Со временем, могут быть добавлены дополнительные языки. Даже если Ваш язык не входит, скорее всего, вы все еще принести пользу; так как все языки используют те же основные библиотеки Tk, есть очевидно много совпадений.

Это также не справочное руководство, оно не будет охватывать все, только то необходимое, что нужно в 95% приложений. Остальное вы можете найти в справочной документации.

Для кого это руководство

Это руководство написано для разработчиков, которые разрабатывают инструменты и приложения на Tk. Оно также имеет отношение к GUI со кнопками, списками, чекбоксами, полями редактирования, 2D графикой и т. д. Таким образом, если вы ищите способ использования в TK внутреннего С кода, или хотите создать захватывающий 3D интерфейс, то это, вероятно, руководство не для вас.

Это руководство также не научит вас основам языка программирования Python, поэтому вы должны иметь базовое понимание языка к моменту прочтения. Кроме того, вы должны иметь начальные представления о настольных приложениях в целом, и хотя вы не должны быть дизайнером пользовательского интерфейса, некоторые знания дизайна GUI всегда полезны.


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

Для большинства инструментов, вы бы и не подумали сказать что-то вроде этого, но Tk не тот случай. Tk имеет очень длинную эволюцию (смотрите Tk Backgrounder), и любая эволюция имеет тенденцию оставлять вас с кучкой хлама; наряду с тем, насколько много графические интерфейсы и стандарты эволюционировали со временем, вы можете наблюдать что для такого большого и составного как GUI библиотека проекта, обновление и хорошая обратная совместимость вместе - очень сложная задача.

Tk, в последние годы, сурово критиковали, мягко говоря. Частично это было заслуженно, но большинство отнюдь.Как и любой инструмент с графическим интерфейсом, он может быть использован для создания абсолютно ужасного вида и устаревших интерфейсов пользователя, но с соответствующей заботой и вниманием, он также может быть использован для создания невероятно хорошенького интерфейса. Большинство людей знают о плохих примерах; а о многих хороших примерах люди даже не думают, что они сделаны в Tk. В этом руководстве мы собираемся сосредоточиться на том, что вам нужно чтобы построить хорошие пользовательские интерфейсы, что не так трудно, как это было до Tk 8.5.

Так современные настольные графические пользовательские интерфейсы с использованием современных соглашений и чувства дизайна с использованием современных инструментов, предоставляемых Tk 8.5.

Расширения Tk

Когда речь заходит о лучшей современной практике, Tk расширения заслуживают особого слова к сведению. За эти годы некоторые группы предоставили все виды дополнения к Тk, например, добавив новые виджеты не доступные в ядре (или, по крайней мере, не в то время). Некоторые известные и весьма популярные Tk расширения включают BLT, Tix, iWidgets, BWidgets, есть многие, многие другие.

Многие из этих расширений были созданы года назад. Поскольку ядро Tk всегда был очень обратно совместимы, эти расширения в целом продолжают работать с более новыми версиями. Тем не менее, многие из них не были обновлены, или не были существенно обновлены, в течение длительного времени. Они могут не отражать текущее соглашение платформы или стилей и т. д. в то время как они "работают", они могут сделать ваши приложения выгядят очень древними или неуместными.

Если вы решите использовать Tk расширения, то настоятельно рекомендуем вам изучить и рассмотреть свой ​​выбор тщательно.

Лучше двигаться вперед

Tk также дает вам много вариантов выбора. Есть по крайней мере шесть различных способов расположить виджеты на экране, часто множество различных виджеты, которые могли бы сделать то же самое, особенно, если вы учитываете огромный ассортимент расширений к Tk, таких как Tix, BLT, BWidgets, ITK и другие. Большинство из них также постарше, большинство из них не обновляются и, следовательно, хреново выглядят, и во многих случаях они предоставляют средства не нужные при более новых и современных удобствах , недавно встроенных в сам Tk. Но по причине обратной совместимости, большинство этих старых способов делать вещи все еще продолжают работать, год за годом. Это не обязательно означает, что люди все равно должны использовать какие-нибудь из них.

Таким образом, есть много вариантов выбора в Tk, но, честно говоря, весь этот выбор встретится в пути. Если вы хотите изучить и использовать Tk, вам не нужны все варианты, вам нужен правильный выбор, так что вам не придется делать все исследования и делать выбор самостоятельно. Вот что это руководство даст вам. Рассматривайте это как эквивалент документации к упрямому программному обеспечению. Поэтому мы часто используем различные способы делать вещи, чем в другой документации или примерах, часто, это потому, что, когда те были написаны, лучшие способы даже не существовали. Позже, когда вы уже стали экспертом, и вы встретили некоторую дурацкую ситуацию, в которой нормальный выбор не подходит, вы можете пойти вокруг поохотиться на альтернативы.

Как использовать руководство

Хотя руководство предназначено для последовательного изучения, вы можете прыгать по нему туда-сюда как вам необходимо. Мы обычно публикуем ссылки на ресурсы, где вы можете получить больше информации, будь это ссылки на другую документацию на сайте, такую как наша "widget roundup" предоставляющая информацию по использованию каждого Tk виджета, или внешняя документация, такая как полные справочники по конкретным командам.

Руководство позволяет вам также увидеть как Tk используется разными языками, которые сами по себе могут быть интересны и чрезвычайно полезны.


Соглашения
Как это обычно делается, коды листингов, интерпретатора или команды оболочки и ответы будут обозначены шрифтом фиксированной ширины. При показе интерактивной сессии с переводчиком, те части, которые вы вводите, кроме того, будут полужирным шрифтом фиксированной ширины.
Иконки слева от текста используются так:
Этот параграф содержит материал, который специфичен для Tcl связок к Tk.
Этот параграф содержит материал, который специфичен для Ruby связок к Tk.
Этот параграф содержит материал, который специфичен для Perl связок к Tk.
Этот параграф содержит материал, который специфичен для Python связок к Tk.
Эта заметка поможет указать на общие ошибки, которые совершают люди, или предложить полезное, но не обязательно очевидное решение связанное с данной темой.
Эта заметка показывает новый способ делать старые вещи в Tk 8.5, потому что он значительно отличается о раннего. Людям,  знакомым со старыми  версиями Tk, или программами, разработанными со старыми версиями Tk, следует обратить особое внимание.
Этот параграф предоставляет некоторую фоновую информацию, не относящуюся прямо к теме, но помогающую понять немного лучше о том, как и почему вещи делаются этим, а не иным способом.
Эта заметка означает ошибку в самом руководстве, которая еще не была исправлена, или раздел, которые был удален, но не был замещен.
Эта заметка показывает область Tk, которая мило может быть названа как "грубый край". Она может свидетельствовать о плохом или пропущенном API, поэтому нужно идти в обход. Так как исправление этих вещей занимает длительное время, то мы в вашем коде маркируем их с помощью "TODO", и вы можете вспомнить о них позже, и посмотреть, не была ли исправлена данная проблема начисто новым API.