9

10個のアイテムのリストを表示する単純なPython+Tkinterアプリケーションがあります。

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()

アプリケーションの開始後にリストにフォーカスがあり、上下の矢印を使用して選択を移動できるように変更することはできますか?アプリの起動後、アプリのウィンドウにフォーカスがありますが、マウスでリストをクリックするまで矢印で選択を移動できません:(。とのさまざまな組み合わせを試しましfocus_set()focus_force()が、機能しません。

Windows 7、OSX 10.7、Ubuntu12.04のPython2.7で確認済み

アップデート

「Treeview」が「Button」などの他のウィジェットに変更された場合、フォーカスは機能しています。だから、どういうわけかTreeviewのフォーカスを間違って設定したようです。

4

1 に答える 1

9

ついに解決策が見つかりました-Treeviewウィジェットは2回フォーカスを設定する必要があるようです。1つ目はウィジェット自体、2つ目はアイテムです。

list.selection_set( items[ 0 ] )
list.focus_set()
list.focus( items[ 0 ] ) # this fixes a problem.
于 2012-06-30T21:13:02.897 に答える