2015-10-16 2 views
2

Я изучаю ttk в глубину и хочу знать, как найти логический макет для любого виджета. Сейчас просто исследуем и делаем небольшие эксперименты. В следующем коде, пытающемся показать текст, но детали макета не документированы для checkbutton. Так возник вопрос, как легко найти их для любого виджета.Как найти логическую схему виджетов tk?


This Ttk style guide действительно хороший справочник, но не помогает в компоновке в глубину. Спасибо.

ttk::style element create pin vsapi EXPLORERBAR 3 { 
    {pressed !selected} 3 
    {active !selected} 2 
    {pressed selected} 6 
    {active selected} 5 
    {selected} 4 
    {} 1 
} 
ttk::style layout Explorer.Pin {Explorer.Pin.pin -sticky news} 
pack [ttk::checkbutton .pin -style Explorer.Pin] 
+1

Удачи. Я должен прочитать исходный код, чтобы найти это ... –

ответ

2

Чтобы найти свой стиль в использовании для данного виджета использовать winfo class команду:

% ttk::checkbutton .b 
% winfo class .b 
TCheckbutton 

Вы можете сбросить макет с помощью ttk::style layout: (переформатирован для удобства чтения)

% ttk::style layout TCheckbutton 
Checkbutton.padding -sticky nswe -children { 
    Checkbutton.indicator -side left -sticky {} 
    Checkbutton.focus -side left -sticky w -children { 
     Checkbutton.label -sticky nswe 
    } 
} 

Это объявляет элементы и способы их размещения. Таким образом, чтобы заменить indicator элемент, который вы можете скопировать этот макет, чтобы определить новую структуру, которая ссылается на свой новый элемент:

% ttk::style layout Pin.TCheckbutton { 
    Checkbutton.padding -sticky nswe -children { 
    Checkbutton.pin -side left -sticky {} 
    Checkbutton.focus -side left -sticky w -children { 
     Checkbutton.label -sticky nswe 
    } 
    } 
} 
% place [ttk::checkbutton .pin -text text -style Pin.TCheckbutton] -x 10 -y 10 

Screenshot of modified checkbutton

Следует отметить, что некоторые из элементов подобрать дополнительную конфигурацию, прикрепленную к стилю командой ttk::style configure поэтому при копировании стиля вы также должны скопировать конфигурацию:

ttk::style configure $new_stylename {*}[ttk::style configure $old_stylename] 

и, скорее всего, также карта состояний виджета (ttk::style map).

Чтение файлов библиотеки ttk в <Tcl/Tk folder>/library/ttk должно показать немного о том, как эти вещи объединены. В частности, файл vsapi.tcl делает немного макета для Windows.

+0

Perfect. Это то, что я ищу. – OliveOne