Tree vervielfältigen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Braindie
User
Beiträge: 20
Registriert: Mittwoch 10. Juni 2009, 07:54

Hallo,

mal wieder eine kleine Frage zum Tree in wx.
Ich habe ein TreeCtrl im MainFrame erstellt. Nun möchte ein selbstgestaltetes Dialog öffnen und der der gleiche Tree aus dem MainFrame soll auch da angezeigt werden.
Bis jetzt löse ich das Problem indem ich einfach einen neuen Tree erstelle und alle Daten neu einlese. Beispielcode weiter unten.

Ich schaffe es aber nicht eine "kopie" meines Orignaltrees im geöffneten Dialog darzustellen.
Über eine Idee oder ein paar Anregungen wäre ich sehr erfreut, da ich mit den TreeIds meines Maintrees arbeite und dann könnte ich diese weiterverwenden.

Vielen Dank im voraus.

Stefan

Code: Alles auswählen

#!/usr/bn/env python 
# -*- coding: iso-8859-15 -*- 

import os
import wx 

Name=[['','Montag'],['','Montag','a'],['','Montag','a','ab'],['','Montag','a','ab','abc'],
['','Dienstag'],['','Dienstag','a'],['','Dienstag','a','ab'],['','Dienstag','a','ab','abc']]

class MyFrame(wx.Frame): 
    def __init__(self, parent = None, title = "test", size = wx.Size(550, 400)):
        wx.Frame.__init__(self, parent, -1, title, size=size) 
        panel=wx.Panel(self) 
        self.button=wx.Button(panel, -1, "Test", pos=(400, 150)) 
        self.tree=wx.TreeCtrl(panel, size=(250, 300))
        self.Bind(wx.EVT_BUTTON, self.on_button, self.button) 
        self.AddTreeNodes()
        
    
    def AddTreeNodes(self, event=None): 
        
        """Erstelle Baumstruktur """
        self.tree.DeleteAllItems()
        self.root=self.tree.AddRoot("Datenbank")
        self.knoten=[]
        for item in Name:
            if len(item) == 2:
                self.knoten.append(self.tree.AppendItem(self.root, item[-1]))
            else:
                Stelle=Name.index(item[0:-1])
                self.knoten.append(self.tree.AppendItem(self.knoten[Stelle],
                                                                item[-1]))
    
    def on_button(self, event):
        self.modal_frame=MyNewDialog(self)
        self.modal_frame.AddTreeNodes()
        self.modal_frame.ShowModal()
    
class MyNewDialog(wx.Dialog): 
    def __init__(self, parent, title = "Test2", size =(200, 200)): 
        wx.Dialog.__init__(self, parent, -1, title, size=size) 
        panel=wx.Panel(self, -1, size=(200, 200)) 
        self.tree2=wx.TreeCtrl(panel, size=(200, 200))
        self.Bind(wx.EVT_CLOSE, self.on_close) 
        self.MakeModal(True) 
    
    def AddTreeNodes(self, event=None):
        self.tree2.DeleteAllItems()
        self.root = self.tree2.AddRoot("Datenbank")
        self.knoten=[]
        for item in Name:
            if len(item) == 2:
                self.knoten.append(self.tree2.AppendItem(self.root, item[-1]))
            else:
                Stelle = Name.index(item[0:-1])
                self.knoten.append(self.tree2.AppendItem(self.knoten[Stelle],
                                                                item[-1]))
    
    def on_close(self, event = None):
        self.MakeModal(False) 
        event.Skip() 
        
    def on_closeme(self, event): 
        self.Close(True) 

if __name__ == "__main__": 
    
    app=wx.PySimpleApp() 
    frame = MyFrame() 
    frame.Show() 
    app.MainLoop()
Antworten