ttk.Treeview
ファイルシステムツリーのコンテンツを入力しているインスタンスを使用した簡単なスクリプトがあります。(葉)アイテムがクリックされたときに特定の操作を実行したいので、次のようにハンドラーを構成しました。
self.tree.tag_bind('#entry', '<1>', self.onClick)
この方法onClick
では、次のように、クリックされたアイテムを単に印刷しています。
def onClick(self, event):
item_id = str(self.tree.focus())
print 'Selected item was %s' % item_id
item = self.tree.item(item_id)
flag = '#another_tag' in item['tags']
print ' flag = %s' % flag
メッセージのクリック数が1つ遅れていることがわかりました。したがって、最初のクリックでランダムな値(ツリーのルートのように見えます)が取得され、n番目のクリックでクリックされた(n-1)番目のアイテムの値が出力されます。
それらは次のように挿入されました:
tree.insert(parent_id, 'end', id, text=id, tags=['#entry'])
これがTkinterのバグなのか、それとも私が間違っていることなのか、誰か知っていますか?
これは、UbuntuNattyとOSX Lionの両方で問題のようです(デフォルトのプリインストールバージョンのPythonとTkinterを使用)