2015-10-16 55 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)。

读取<Tcl/Tk folder>/library/ttk中的ttk库文件应该显示很多关于这些东西是如何放在一起的。 vsapi.tcl文件特别为Windows做了相当多的布局。

+0

完美。这是我正在寻找的。 – OliveOne