如何为Tkinter小部件设置焦点?

gri*_*yvp 9 python tkinter

我有一个简单的Python + Tkinter应用程序,它显示了10个项目的列表:

import Tkinter, ttk
list = ttk.Treeview( Tkinter.Tk() )
list.pack( fill = Tkinter.BOTH, expand = 1 )
items = [ list.insert( '', 'end', text = str( i ) ) for i in range( 10 ) ]
list.selection_set( items[ 0 ] )
list.focus_set() # This is not working - list has no focus :(
Tkinter.mainloop()
Run Code Online (Sandbox Code Playgroud)

是否可以修改它,以便在应用程序启动后,列表将具有焦点,我可以通过向上和向下箭头移动选择?应用程序启动后,应用程序的窗口具有焦点,但直到我点击鼠标名单我不能移动的箭头选择:(.我尝试不同的组合focus_set()focus_force(),但它不工作.

在Windows 7,OSX 10.7和Ubuntu 12.04上使用Python 2.7进行检查

UPDATE

如果将"Treeview"更改为某个其他窗口小部件,例如更改为"按钮",则焦点正在工作.所以我似乎错误地为Treeview设置了焦点.

gri*_*yvp 9

最后找到了一个解决方案 - 似乎Treeview小部件需要设置焦点两次:首先是小部件本身,第二个是项目:

list.selection_set( items[ 0 ] )
list.focus_set()
list.focus( items[ 0 ] ) # this fixes a problem.
Run Code Online (Sandbox Code Playgroud)