ttk: Themed Tk Widget

风行水上 @ 2014-06-22 23:00:32
标签:

    Tk中多了一组位于命名空间为ttk的组件,比如创建一个按钮可以用命令button,也可以用命令ttk::button。自然问题也就来了,两者之间有什么不同呢?

    ttk是Themed Tk的意思。就是说Tk组件有“主题”的概念了。

    控件本质的目的是为了和用户进行交互。但就像衣服一样,人们总想着有所不同,有所风格。这就要求把空间的功能和样式进行分离。

    在网页设计中,是分离为用于内容的HTML和用于样式的CSS。

    在Tk中,是分离出一个style的概念用于控制widget的样式。一组style(样式)的集合组成theme(主题)。

    用于设置样式和主题的Tk命令是ttk::style

    Style(样式)

    Style(样式)用于指定特定组件的外观。

    ttk::style lookup TButton -foreground             ;# 查询默认样式属性
    ttk::style lookup TButton -foreground "pressed"   ;# 查询对应状态的样式属性
    
    ttk::style configure TButton -foreground          ;# 设置样式属性
    ttk::style configure TButton -foreground blue
    ttk::style map TButton \	
      -foreground [list disabled red active green]    ;# 设置动态样式(不同状态的样式)
    

    Style的选择和指定

    一个widget应该使用哪一个Style按照下面的顺序决定:

    1. -style选项显示指定的Style
    2. -class选项所指定的类型名称所对应的的Style
      • "ttk::button"的类型名称(-class)是"TButton"

    Theme(主题)

    Theme(主题)是一组Style的集合,相当于CSS里面的样式表。

    ttk::style theme create $theme                       ;# 创建新主题
    ttk::style theme create $theme -parent $parent_theme ;# 创建新主题,继承指定的主题
    
    ttk::style theme create $theme -settings $script     ;# 创建主题并执行命令$script
    
    ttk::style theme settings $them $script   ;# 临时切换到主题$theme,执行命令$script,再切换回来
    
    ttk::style theme names        ;# 列出主题名字
    
    ttk::style theme use          ;# 查询当前主题
    ttk::style theme use "clam"   ;# 设置主题
    
    

    Layout(布局)

    TODO

    标签:

      分享到:
      comments powered by Disqus

      24/26ms