可以在tk中为小部件添加新状态吗?

时间:2018-03-03 23:21:17

标签: tcl tk

可以在窗口小部件的默认状态中添加额外的状态吗?

例如,在tk(ttk)中使用样式有时候配置窗口小部件的选项非常有限。但是,使用命令 ttk :: style map 和(如果可能)定义额外状态,将很容易配置它。

1 个答案:

答案 0 :(得分:1)

低级状态管理引擎将状态映射到整数的位。支持状态的完整列表是(这是直接从C代码中提取的信息;这完全是基本事实):

  
      
  • 有效 - 鼠标光标位于小部件或元素上
  •   
  • 已停用 - 已停用窗口小部件
  •   
  • 焦点 - 小工具具有键盘焦点
  •   
  • 紧迫 - 按下或“武装”
  •   
  • 已选择 - “on”,“true”,“current”等
  •   
  • 背景 - 顶级窗口失去焦点(Mac,Win“无效”)
  •   
  • 替代 - 特定于窗口小部件的备用显示样式
  •   
  • 无效 - 错误值
  •   
  • readonly - 禁用编辑/修改
  •   
  • 悬停 - 鼠标光标位于小部件上
  •   
  • reserved1 - 保留以供将来扩展
  •   
  • reserved2 - 保留供将来续订
  •   
  • reserved3 - 保留供将来续订
  •   
  • user3 - 用户可定义的状态
  •   
  • user2 - 用户可定义的状态
  •   
  • user1 - 用户可定义的状态
  •   

仔细查看该列表,我估计特别是 user1 user2 user3 可以用于您的额外状态。定义更多内容需要对C代码进行自定义更改,但是您有三个可以继续进行更改。 我猜一下,也可以使用 reserved1 ... reserved3 。我不禁想到用户界面必须要多么复杂才能需要那么多不同的独立状态描述符,但他们在那里我真的怀疑Ttk会很快使用它们。 (如果您正在大量使用这类东西,请向Tk的开发人员说明一下,让他们了解它;它有助于说服人们不要“优化”这些东西,特别是好的用途可能导致州名被正式命名。)

请不要重新发明任何现有州旗的含义。没有它,一切都令人困惑!