可以向 tk 中的小部件添加新状态吗?

It's possible add new states to widgets in tk?

可以向小部件的默认状态添加额外的状态吗?。

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

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

  • active — Mouse cursor is over widget or element
  • disabled — Widget is disabled
  • focus — Widget has keyboard focus
  • pressed — Pressed or “armed”
  • selected — “on”, “true”, “current”, etc.
  • background — Top-level window lost focus (Mac, Win “inactive”)
  • alternate — Widget-specific alternate display style
  • invalid — Bad value
  • readonly — Editing/modification disabled
  • hover — Mouse cursor is over widget
  • reserved1 — Reserved for future extension
  • reserved2 — Reserved for future extension
  • reserved3 — Reserved for future extension
  • user3 — User-definable state
  • user2 — User-definable state
  • user1 — User-definable state

查看该列表,我猜想特别是 user1user2user3 可用于您的额外状态。定义更多需要对 C 代码进行自定义更改,但您有三个权利可以继续进行。 我想在紧要关头,也可以使用 reserved1reserved3。一想到 UI 需要那么多不同的独立状态描述符是多么复杂,我就不寒而栗,但它们就在那里,我真的怀疑 Ttk 很快就会大量使用它们。 (如果你经常使用这种东西,一定要写信给 Tk 的开发者,让他们知道这件事;这有助于说服人们不要“优化”掉这些东西,特别好的用途可能会导致到正式命名的状态位。)

请不要重新发明任何现有州旗的含义。没有它,一切都已经够混乱了!