【问题标题】:Tkinter: Listbox separators, disabled items, keyboard navigation?Tkinter:列表框分隔符、禁用项目、键盘导航?
【发布时间】:2011-05-07 15:00:27
【问题描述】:

我正在研究 Tkinter 列表框小部件,但无法找到以下功能的解决方案:

  1. 如何创建不可选择的水平分隔符项目,例如。分隔符相当于 Tkinter 菜单小部件的 .add_separator()? (使用破折号和下划线之类的字符看起来很糟糕)。

  2. 如何禁用特定项目?我尝试使用 .itemconfig( index, state='disabled' ) 没有成功。

  3. 如何启用键盘导航,例如。当用户的键盘输入自动向前滚动到以用户键入的文本开头的最近项目时?我必须bind(<KeyPress>, ...) 自己管理这种行为吗?

  4. 使用 Text 小部件或 ttk.Treeview 小部件是否更容易实现上述某些功能?

【问题讨论】:

  • 我建议你单独问这些会得到更好的答复。
  • @Steven:我不确定社区对于如何分块问题的态度。我会将以后的帖子分解为单独的问题。
  • @Malcom 我也不确定社区对此有何看法。我读了你的问题,以为我可以回答其中几个,但没有回答,因为我无法回答整个问题。
  • @Steven:如果您的答案与 Bryan 不同,请告诉我,我会将我原来的问题作为单独的问题重新发布。以后我会发布更多细化的问题。
  • @Malcom:Bryan 完全正确。

标签: python user-interface listbox tkinter ttk


【解决方案1】:
  1. 你不能。小部件不支持。

  2. 您不能禁用某些项目,小部件不支持状态属性。话虽如此,如果用户选择了禁用的东西,您可以监控选择并执行适当的操作,并使用项目前景来表示禁用。

  3. 您需要绑定到按键事件并自行管理行为。不是特别难,就是有点乏味。

  4. 文本小部件可能是您最好的选择,尽管您必须添加绑定以模仿列表框的默认绑定。

底线:Tkinter 没有提供任何直接支持您想要做的事情,但构建块都在那里。你只需要自己构建它。

【讨论】:

  • 谢谢。模拟残疾的聪明想法(2)。我将搜索 Unicode 字符作为比传统破折号或下划线更好的分隔符。
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多