Tkinter:列表框分隔符、禁用项、键盘导航?
我正在学习Tkinter的Listbox控件,但对于以下功能一直找不到解决办法:
我该如何创建不可选择的水平分隔项,比如类似于Tkinter菜单控件中的.add_separator()?(用破折号和下划线看起来太糟糕了)。
我该如何禁用某个特定的项?我尝试使用.itemconfig( index, state='disabled' ),但没有成功。
我该如何启用键盘导航,比如当用户输入时,自动滚动到下一个以用户输入的文本开头的项?我需要自己用
bind(<KeyPress>, ...)
来管理这个行为吗?以上某些功能用Text控件或者
ttk.Treeview
控件实现会更简单吗?
1 个回答
5
你不能这样做。这个小部件不支持这个功能。
你不能禁用某些选项,因为这个小部件没有状态属性。不过,你可以监控用户的选择,如果用户选择了一个禁用的选项,就做出相应的处理,并用不同的颜色来表示这个选项是禁用的。
你需要监听按键事件,并自己管理行为。这并不特别困难,只是有点麻烦。
文本小部件可能是最好的选择,不过你需要添加一些绑定,以模拟列表框的默认绑定。
总的来说:Tkinter没有直接支持你想做的事情,但所有的基础都在那儿。你只需要自己去搭建。