Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter:列表框分隔符、禁用项、键盘导航?_Python_User Interface_Listbox_Tkinter_Ttk - Fatal编程技术网

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

Python Tkinter:列表框分隔符、禁用项、键盘导航?,python,user-interface,listbox,tkinter,ttk,Python,User Interface,Listbox,Tkinter,Ttk,我正在研究Tkinter Listbox小部件,无法找到以下功能的解决方案: 如何创建不可选择的水平分隔符项,例如与Tkinter菜单小部件的.add_separator()等效的分隔符?(使用破折号和下划线等字符看起来很糟糕) 如何禁用特定项目?我尝试使用.itemconfig(index,state='disabled'),但没有成功 如何启用键盘导航,例如,当用户的键盘输入自动向前滚动到以用户键入的文本开头的最近项目时?我必须绑定(,…)并自己管理这种行为吗 使用文本小部件或ttk.

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

  • 如何创建不可选择的水平分隔符项,例如与Tkinter菜单小部件的.add_separator()等效的分隔符?(使用破折号和下划线等字符看起来很糟糕)

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

  • 如何启用键盘导航,例如,当用户的键盘输入自动向前滚动到以用户键入的文本开头的最近项目时?我必须
    绑定(,…)
    并自己管理这种行为吗

  • 使用文本小部件或
    ttk.Treeview
    小部件是否更容易实现上述功能

  • 你不能。小部件不支持这个

  • 您不能禁用某些项目,小部件不支持状态属性。也就是说,如果用户选择了禁用的内容,您可以监视选择并执行适当的操作,并使用项目前景表示禁用

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

  • 文本小部件可能是您的最佳选择,不过您必须添加绑定以模拟listbox的默认绑定


  • 一句话:Tkinter没有提供任何直接支持您想要做的事情的功能,但是构建模块都在那里。你只需要自己动手就可以了。

    我建议,如果你单独问这些问题,你会得到更好的回答。@Steven:我不确定社区对如何组织问题的态度。我将把未来的帖子分成几个问题。@Malcom我也不确定社区对此有何看法。我读了你的问题,以为我能回答其中几个问题,但没有回答,因为我不能回答全部问题。@Steven:如果你的答案与Bryan的不同,请告诉我,我将以单独的问题重新发布我的原始问题。将来我会发布更多的普通问题。@Malcom:Bryan完全正确。谢谢。模拟残疾的聪明想法(2)。我将搜索Unicode字符作为比传统的破折号或下划线更好的分隔符。