Главная |  Новости |  Продукты |  Программы |  Статьи |  Контакты |  
Небольшой исторический экскурс: Вплоть до версии 8.4 библиотеки Tk для отрисовки шрифтов использовал традицонный способ системы X11. Это выражалось в том, что ни о каком сглаживании шрифтов даже не приходилось и мечтать. Кроме того, существовал баг с подбором шрифтов для кириллицы, в результате чего русскоязычный текст выглядел ужасно, что можно наблюдать на старых скриншотах tkabber-а, но с версии Tk 8.5 дело кардинально изменилось. Теперь для отрисовки шрифтов используется библиотека Xft. То есть можете смело бросать камень в того, кто скажет, что шрифты в Tk страшные :). Более того, в Tk 8.5 переработаны дефолтные настройки толщины бордюров виджетов, и теперь "из коробки" Tk выглядит немного менее архаично.

Итак, что же надо сделать, чтобы получить красивый внешний вид приложения на Tk:

1. Установить Tk 8.5 или выше и настроить его для использования по умолчанию в приложениях на Tcl/Tk. В Debian/Ubuntu последнее делается с помощью update-alternatives --config wish где надо выбрать wish8.5.

2. Использовать для тонкой настройки виджетов механизм ресурсов X.

В отличие от библиотек Qt и GTK, авторы которых изобрели собственные средства для управления конфигурацией, Tk использует стандартный способ настройки внешнего вида: X Resource Database.

База данных ресурсов X11 содержит настройки в следующем формате:

application.component.subcomponent.subcomponent.attribute: value

Путь к опции состоит из имени приложения и пути до конкретного экземпляра виджета, разделённых точками. Допускается использование * для подстановки любого набора символов.

Если название элемента списка начинается с маленькой буквы, то под настройку попадает только конкретный виджет с данным именем. Иначе весь класс виджетов. Для Tk стандартный набор классов виджетов следующий: Button, Checkbutton, Radiobutton, Label, Entry, Listbox, Menuentry, Menu, Menubutton, Message, Scale, Text.

Имя атрибута (attribute) должно всегда начинаться с маленькой буквы. Стандартными атрибутами для Tk являются: font, borderWidth и т.д. Подробнее можно посмотреть тут. Из всех написанных там слов нас наиболее интересует Database Name. Полный список опций для конкретного класса виджетов можно посмотреть тут в секции Widgets.

Итак, примеры. Устанавливаем толщину всех контуров(для кнопок, скроллбаров, полей ввода и т.д.) в 1 пиксел:

*borderWidth: 1

Убираем контур у выпуклой главной менюшки, а контур выпадающих и контекстных меню делаем толщиной в 1 пиксел:

*Menu.borderWidth: 1
*menu.borderWidth: 0

Настраиваем разом все шрифты (Tahoma 10):

*font: Tahoma 10

Если используется Tk<=8.4, lesstif или другие древние тулкиты, то шрифты для совместимости лучше задавать в иксовом формате. Например:

*font: -*-liberation.sans-medium-r-*-*-11-*-*-*-*-*-*-

Для применения настроек надо полученный файл скормить на вход команде xrdb:

cat options | xrdb -merge

Хорошей идеей будет добавить эту команду в скрипты, выполняющиеся при запуске оконной среды или же поместить конфигурацию непосредственно в ~/.Xresources.

Если используется KDE и поставлена галка "применять цвета к приложениям не из KDE", то при запуске среды некоторые X-ресурсы устанавливаются KDE. И это не всегда хорошо, т.к. там определяется ресурс "*background". Так что это поведение неплохо бы отключить.

Ещё о X Resources и их влиянии на внешний вид приложений можно почитать тут.

3. Для настройки дефолтной темы для библиотеки Ttk/Tile, используйте X-ресурс tkTheme:

*tkTheme: clam

Стандартный набор тем для X11: default(строгая тема), classic(тема в стиле Motif), alt(тема в стиле Window$ 95), clam(гламурная тема с округлыми кнопочками).

Также существуют темы для Tile, использующие виджеты Qt или Gtk.

4. Если сделали всё вышеперечисленное, но шрифты до сих пор страшные (так иногда бывает в Ubuntu), то, увы, придётся редактировать вызываемую программу или добавлять следующий Tcl-скрипт в её конфигурационный файл:

foreach f {TkDefaultFont TkTextFont TkFixedFont TkMenuFont TkHeadingFont
TkCaptionFont TkSmallCaptionFont TkIconFont TkTooltipFont} {
font configure $f -family Tahoma -size 10
}

Разумеется, вместо Tahoma 10 можно вставить любой шрифт.

Компания CRS осуществит переезд офиса доступно, быстро, качественно!

Комментарии: (5)   Рейтинг:



Copyright(R) 2001-2009. ThizLinux Laboratory Limited. All Rights Reserved.