Warum gibt mein ttk.Treeview-Click-Handler das falsche Element auf tree.focus() zurück?Python

Python-Programme
Anonymous
 Warum gibt mein ttk.Treeview-Click-Handler das falsche Element auf tree.focus() zurück?

Post by Anonymous »

Ich habe ein einfaches Skript, das eine ttk.Treeview-Instanz verwendet, die ich mit den Inhalten eines Dateisystembaums fülle. Ich möchte eine bestimmte Operation ausführen, wenn auf (Blatt-)Elemente geklickt wird, also habe ich einen Handler wie folgt konfiguriert:

Code: Select all

self.tree.tag_bind('#entry', '', self.onClick)
In der Methode onClick drucke ich einfach das Element aus, auf das geklickt wurde, etwa so:

Code: Select all

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
Ich stelle fest, dass die Nachrichten den Klicks um eins hinterherhinken. Mein erster Klick erhält also einen zufälligen Wert (sieht aus wie die Wurzel des Baums), und dann druckt der n-te Klick die Werte für das (n-1)-te Element aus, auf das geklickt wurde.

Sie wurden wie folgt eingefügt:

Code: Select all

tree.insert(parent_id, 'end', id, text=id, tags=['#entry'])
Weiß jemand, ob das ein Fehler in Tkinter ist oder etwas, was ich falsch mache?

Dies scheint sowohl unter Ubuntu Natty als auch unter OS X Lion (unter Verwendung der standardmäßig vorinstallierten Versionen von Python und Tkinter) ein Problem zu sein.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post