Hallo...
ich habe bei einer GUI ein DropTarget fuer einen Baum und wuerde gern wissen, wie ich herausfinde ueber welchem Eintrag das Objekt "losgelassen" wurde. Meine OnDropFiles-Methode bekommt aber nur x-y-Koordinaten.
Gibt es nen Weg entweder zu erfahren ueber welchem Baumeintrag ich bin oder die aktuelle Position des Baumeintrages in x-y-Koordinaten zu bekommen?
[solved + example] TreeCtrl DropTarget
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
Zuletzt geändert von nkoehring am Sonntag 16. Dezember 2007, 00:05, insgesamt 1-mal geändert.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo nkoehring!nkoehring hat geschrieben:Gibt es nen Weg entweder zu erfahren ueber welchem Baumeintrag ich bin oder die aktuelle Position des Baumeintrages in x-y-Koordinaten zu bekommen?
Vielleicht mit ``HitTest``.
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
Hi und danke fuer die schnelle Antwort gerold.
Irgendwie will mir HitTest nicht so richtig klar werden. Ich bekomme laut Dokumentation eine Konstante wx.TREE_HITTEST_xxx zurueck. Diese haben solche Bezeichnungen wie wx.TREE_HITTEST_BELOW, wx.TREE_HITTEST_ONITEM oder wx.TREE_HITTEST_BUTTON. Ich bekomme jedesmal den Wert 10, also wx.TREE_HITTEST_BELOW|wx.TREE_HITTEST_ONITEMBUTTON ... egal ob ich auf dem Element "abwerfe", oder darueber oder daneben... oder auf einem anderen Element.
Mir gehts aber eher um die Identifizierung des Elementes selbst...
Irgendwie will mir HitTest nicht so richtig klar werden. Ich bekomme laut Dokumentation eine Konstante wx.TREE_HITTEST_xxx zurueck. Diese haben solche Bezeichnungen wie wx.TREE_HITTEST_BELOW, wx.TREE_HITTEST_ONITEM oder wx.TREE_HITTEST_BUTTON. Ich bekomme jedesmal den Wert 10, also wx.TREE_HITTEST_BELOW|wx.TREE_HITTEST_ONITEMBUTTON ... egal ob ich auf dem Element "abwerfe", oder darueber oder daneben... oder auf einem anderen Element.
Mir gehts aber eher um die Identifizierung des Elementes selbst...
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo nkoehring!nkoehring hat geschrieben:Mir gehts aber eher um die Identifizierung des Elementes selbst...
Aus der wxWidgets-Hilfe:
Ich habe es aber nie selber ausprobiert.wxPython note: in wxPython both the wxTreeItemId and the flags are returned as a tuple.
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
Ah nun... nach einigem Hin und Her... ner Menge Flucherei und der Annahme, dass diese Methode jedesmal was anderes zurueck gibt, nur um mich zu Aergern klappt es endlich 
Hier ein beispielhafter Code:
Wobei das Droptarget halt die gegebene Methode uebergeben bekommt und OnDropFiles ungefaehr so aussehen koennte:
merci beaucoup gerold
...ja ich weiß, mit ner Frauenstimme wird das noch viel besser klingen

Hier ein beispielhafter Code:
Code: Alles auswählen
def drop_method(self, files, x, y):
item, flag = self.treectrl.HitTest(wx.Point(x, y))
if item.IsOk():
print "Would add files to \""+self.treectrl.GetItemText(item)+"\"."
else:
print "No hit."
Code: Alles auswählen
class MyFileDropTarget(wx.FileDropTarget):
def __init__(self, drop_method):
wx.FileDropTarget.__init__(self)
self.drop_method = drop_method
def OnDropFiles(self, x, y, filenames):
print "\n%d file(s) dropped at %d,%d:\n" %(len(filenames), x, y)
print '\n'.join(['\t'+file for file in filenames])
self.drop_method(filenames, x, y)
merci beaucoup gerold

...ja ich weiß, mit ner Frauenstimme wird das noch viel besser klingen

[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Avec plaisir!nkoehring hat geschrieben:merci beaucoup
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.