Как известно, есть такая библиотека для графических интерфейсов, Tk.
На Tcl/Tk легко писать скрипты с графическим интерфейсом. Так же Tk
используется в качестве стандартной (доступной по умолчанию на всех
платформах и не требующей установки) графической библиотеки в Python.
Приложений написанных с использованием Tk довольно много. Раз читаете
этот пост — значит, видели (смотрим, например, aptitude search ~Dpython-tk
и aptitude search ~D^tk
).
Однако
русским пользователям Debian и Ubuntu с Tk явно не повезло. По
умолчанию, из коробки, русские буквы в ней отображаются очень криво.
Вот, к примеру простейшее приложение-однострочник:
$ echo 'button .b -text "привет, world!" ; pack .b ' | wishи наблюдаем вот такой результат:
Хороших слов для таких шрифтов не находится. Такое ощущение, русские буквы берутся из какого-то китайского шрифта, при этом никакого сглаживания и хинтинга. Проблема настолько острая, что даже разобрана в LOR Wiki. В случае Tcl/Tk достаточно начать использовать Tk 8.5 вместо 8.4. В Debian/Ubuntu это делается так:
$ sudo update-alternatives --config wishПовторяем наш проверочный пример, и получаем вполне пристойный результат:
Есть 3 альтернатив, которые предоставляют `wish'.
Выбор Альтернатива
-----------------------------------------------
* 1 /usr/bin/wish8.4
+ 2 /usr/bin/wish-default
3 /usr/bin/wish8.5
Нажмите enter, чтобы сохранить значение по умолчанию[*], или введите выбранное число: 3
Используется `/usr/bin/wish8.5' для предоставления `wish'.
Понятно, что перед этим нужно поставить пакеты
tcl8.5
и tk8.5
. Это минутное дело.Однако приложениям на Python, использующим Tk, вышеописанный фокус не поможет. В Debian (Lenny) и Ubuntu (Hardy, Intrepid) пакет
python-tk
собран с поддержкой только tk8.4
, то есть по-умолчанию такие приложения выглядят вот так:Чтобы это исправить, нужно поставить пакет
python-tk
собранный с поддержкой Tk 8.5. В Debian такой пакет есть, но только в experimental. Я скачал оттуда pytnon-tk 2.5.4-1 и нужный ему blt 2.4z-4 вручную и поставил. Никаких лишних зависимостей они не тянут, а Tk-приложения обретают новую жизнь:В Ubuntu (Intrepid) ситуация похожая. Пакет
python-tk
собранный с Tk 8.5 повляется лишь в Jaunty. И сразу python-tk 2.6.1-0ubuntu1.
Конечно, в таких случаях религия предписывает пересобирать пакет
самостоятельно, но, как ни странно, если поставить его на машину с
Intrepid, то он отлично уживается с обычным Python 2.5, за собой
никаких зависимостей не тянет, и у меня лично вроде всё работает. В
качестве другого «халявного» варианта можно поставить на машину с
Intrepid python-tk
и blt
из Debian. Вроде тоже работает.Источник: http://sovety.blogspot.com/2009/03/cyrillic-fonts-in-tcltk-and-pythontk.html