[solved + example] TreeCtrl DropTarget

Plattformunabhängige GUIs mit wxWidgets.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

[solved + example] TreeCtrl DropTarget

Beitragvon nkoehring » Samstag 15. Dezember 2007, 21:25

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?
Zuletzt geändert von nkoehring am Sonntag 16. Dezember 2007, 00:05, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: TreeCtrl DropTarget

Beitragvon gerold » Samstag 15. Dezember 2007, 21:50

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?

Hallo nkoehring!

Vielleicht mit ``HitTest``.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Beitragvon nkoehring » Samstag 15. Dezember 2007, 22:43

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...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Samstag 15. Dezember 2007, 23:22

nkoehring hat geschrieben:Mir gehts aber eher um die Identifizierung des Elementes selbst...

Hallo nkoehring!

Aus der wxWidgets-Hilfe:
wxPython note: in wxPython both the wxTreeItemId and the flags are returned as a tuple.

Ich habe es aber nie selber ausprobiert.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Beitragvon nkoehring » Sonntag 16. Dezember 2007, 00:05

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 :-D

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."


Wobei das Droptarget halt die gegebene Methode uebergeben bekommt und OnDropFiles ungefaehr so aussehen koennte:

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 :-D
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Sonntag 16. Dezember 2007, 00:16

nkoehring hat geschrieben:merci beaucoup

Avec plaisir!
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]