Python / Tkinter:列表框分隔符,禁用项目,键盘导航?

时间:2010-11-10 01:15:24

标签: python user-interface listbox tkinter ttk

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

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

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

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

  4. 使用Text小部件或ttk Treeview小部件可以更轻松地实现上述某些功能吗?

  5. 谢谢你, 马尔科姆

1 个答案:

答案 0 :(得分:5)

  1. 你做不到。小部件不支持。

  2. 您无法禁用某些项目,该窗口小部件不支持状态属性。话虽如此,您可以监控选择并在用户选择禁用的内容时执行相应的操作,并使用项目前景来表示已禁用。

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

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

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