Also ich konnte mit "GetSelection" die aktuell ausgewählte TreeItemId herausfinden. Und mit "GetPrevSibling" wird mir die vorherige TreeItemId zurück gegeben. So ganz verstehe ich deine Schleife noch nicht. Du brauchst die Position? Wofür?
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import wx
wx.SetDefaultPyEncoding("iso-8859-15")
class MyFrame(wx.Frame):
def __init__(
self, parent = None, id = -1, title = "Example", size = wx.Size(550, 420)
):
wx.Frame.__init__(self, parent, id, title, size = size)
panel = wx.Panel(self)
vbox_main = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(vbox_main)
tree = wx.TreeCtrl(panel)
self.tree = tree
vbox_main.Add(tree, 1, wx.EXPAND | wx.ALL, 5)
root = tree.AddRoot("Root")
first_child = tree.AppendItem(root, "Erster")
second_child = tree.AppendItem(root, "Zweiter")
btn_insert_before = wx.Button(panel, label = "before")
vbox_main.Add(btn_insert_before)
btn_insert_before.Bind(wx.EVT_BUTTON, self.insert_before)
btn_insert_after = wx.Button(panel, label = "after")
vbox_main.Add(btn_insert_after)
btn_insert_after.Bind(wx.EVT_BUTTON, self.insert_after)
def insert_before(self, event):
current = self.tree.GetSelection()
parent = self.tree.GetItemParent(current)
if current.IsOk() and parent.IsOk():
prev = self.tree.GetPrevSibling(current)
if prev.IsOk():
self.tree.InsertItem(parent, prev, "before")
else:
self.tree.InsertItemBefore(parent, 0, "before")
def insert_after(self, event):
current = self.tree.GetSelection()
parent = self.tree.GetItemParent(current)
if current.IsOk() and parent.IsOk():
self.tree.InsertItem(parent, current, "after")
def main():
"""Testing"""
app = wx.PySimpleApp()
f = MyFrame()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()
Vielleicht kannst du damit etwas anfangen.
mfg
Gerold
