Seite 1 von 1

DragnDrop 4 Dummies?

Verfasst: Montag 12. Januar 2009, 18:16
von NUUP
Moin Leute,

ich setz mich nun schon eine weile damit auseinander wie genau drag n Drop unter Python funktioniert, scheine es aber immernoch nicht so ganz begriffen zu haben, vll hat ja jemand von euch die Zeit und Geduld mir die verbliebenen Lücken zu schließen, ich fände das zumindest klasse, da ich leicht verzweifle..


Anbei hab ich einen kleinen Quelltext, den ich mir schonmal zusammengebastelt hab.. was ich nun noch gerne ändern würde, wäre die Tatsache, dass Schieben eines Ordners nicht nur der Ordner, sondern auch der übergeordnete Ordner im jeweiligen Feld auftaucht, (das ist ja kein Problem ich hab das mit "self.Tree.GetItemText(self.Tree.GetItemParent(event.GetItem())" gelöst, allerdings, würde ich gern die Namen der Übergeordneten Ordner in zwei Seperate Variabeln speichern, also eine fürs obere Feld, und eine fürs untere um dann nachher zum Beispiel die beiden übergeordneten Ordner zu vergleichen

leider steht mir da mein Mangelndes Verständnis im Weg..

im übrigen ist der Code nicht mit einem tatsächlichen praktischen Zweck verbunden, es sollte nur ein Bsp geben wie weit ich c.a. gekommen bin

ich würde mich sehr über die eine oder andere Hilfestellung freuen ^^

jedenfalls schonmal danke im Vorraus

Code: Alles auswählen

#!/usr/bin/python

# dragdrop.py

import os
import wx

class MyTextDropTarget(wx.TextDropTarget):
    def __init__(self, object):
        wx.TextDropTarget.__init__(self)
        self.object = object

    def OnDropText(self, x, y, data):
        self.object.InsertStringItem(0, data)


class DragDrop(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(650, 500))

        splitter1 = wx.SplitterWindow(self, -1, style=wx.SP_3D)
        splitter2 = wx.SplitterWindow(splitter1, -1, style=wx.SP_3D)
        self.dir = wx.GenericDirCtrl(splitter1, -1, dir='/home/', style=wx.DIRCTRL_DIR_ONLY)
        self.lc1 = wx.ListCtrl(splitter2, -1, style=wx.LC_LIST)
        self.lc2 = wx.ListCtrl(splitter2, -1, style=wx.LC_LIST)

        dt1 = MyTextDropTarget(self.lc1)
        self.lc1.SetDropTarget(dt1)

        dt2 = MyTextDropTarget(self.lc2)
        self.lc2.SetDropTarget(dt2)

        self.tree = self.dir.GetTreeCtrl()

        self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnDragInit, id=self.tree.GetId())


        splitter2.SplitHorizontally(self.lc1, self.lc2)
        splitter1.SplitVertically(self.dir, splitter2)


        self.Centre()
        self.Show(True)


    def OnDragInit(self, event):
        text = self.tree.GetItemText(event.GetItem())
        tdo = wx.TextDataObject(text)
        tds = wx.DropSource(self.tree)
        tds.SetData(tdo)
        tds.DoDragDrop(True)


app = wx.App()
DragDrop(None, -1, 'dragdrop.py')
app.MainLoop()

[/code]