Небольшой исторический экскурс: Вплоть до версии 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) Рейтинг: