Hier ein bisschen Beispielcode zum Testen:
Code: Alles auswählen
import wx
import wx.gizmos as gizmos
class TestPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
self.DragItem = None
self.Bind(wx.EVT_SIZE, self.OnSize)
self.tree = gizmos.TreeListCtrl(self, -1, style = wx.TR_DEFAULT_STYLE
| wx.TR_FULL_ROW_HIGHLIGHT)
isz = (16,16)
il = wx.ImageList(isz[0], isz[1])
fldridx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, isz))
fldropenidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN, wx.ART_OTHER, isz))
self.fileidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz))
self.tree.SetImageList(il)
self.il = il
self.tree.AddColumn("Main column")
self.tree.SetMainColumn(0)
self.tree.SetColumnWidth(0, 175)
self.root = self.tree.AddRoot("The Root Item")
self.tree.SetItemImage(self.root, fldridx, which = wx.TreeItemIcon_Normal)
self.tree.SetItemImage(self.root, fldropenidx, which = wx.TreeItemIcon_Expanded)
for x in range(15):
txt = "Item %d" % x
child = self.tree.AppendItem(self.root, txt)
self.tree.SetItemImage(child, fldridx, which = wx.TreeItemIcon_Normal)
self.tree.SetItemImage(child, fldropenidx, which = wx.TreeItemIcon_Expanded)
for y in range(5):
txt = "item %d-%s" % (x, chr(ord("a")+y))
item = self.tree.AppendItem(child, txt)
self.tree.SetItemImage(item, self.fileidx, which = wx.TreeItemIcon_Normal)
self.tree.SetItemImage(item, self.fileidx, which = wx.TreeItemIcon_Selected)
self.tree.Expand(self.root)
self.tree.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnBeginDrag)
self.tree.Bind(wx.EVT_TREE_END_DRAG, self.OnEndDrag)
def OnBeginDrag(self, evt):
if not self.tree.ItemHasChildren(evt.GetItem()):
evt.Allow()
self.DragItem = evt.GetItem()
print self.tree.GetItemText(self.DragItem)
def OnEndDrag(self, evt):
old = self.DragItem
if old is None:
return
new_ = evt.GetItem()
if not new_.IsOk() or new_ == old:
return
parent = self.tree.GetItemParent(new_)
OldParent = self.tree.GetItemParent(old)
if new_ != OldParent and parent != OldParent:
self.tree.UnselectAll()
self.tree.SelectItem(old)
return
text = self.tree.GetItemText(old, 0)
self.tree.Delete(old)
if new_ == OldParent:
child = self.tree.InsertItemBefore(new_, 0, text)
else:
child = self.tree.InsertItem(parent, new_, text)
self.tree.SetItemImage(child, self.fileidx,
which = wx.TreeItemIcon_Normal)
self.tree.SetItemImage(child, self.fileidx,
which = wx.TreeItemIcon_Expanded)
self.tree.SelectItem(child)
self.DragItem = None
def OnSize(self, evt):
self.tree.SetSize(self.GetSize())
def main():
app = wx.PySimpleApp()
frame = wx.Frame(None, -1, 'TreeListCtrl', size=(200, 400))
panel = TestPanel(frame)
frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()
HWK