Hmm, gute Idee so ein Plugin.
Also warum der nicht richtig resized:
Wenn man ein Control in wxPython baut, dass selbst aus mehreren Controls besteht, dann muss man auch eine "OnSize" Methode definieren und diese mit dem passenden Event verbinden:
Code: Select all
def __init__(self, parent, id = -1, ...
...
self.Bind(wx.EVT_SIZE, self.OnSize)
def OnSize(self, event):
if self.GetAutoLayout():
self.Layout()
Insgesamt ist es gerade bei TreeCtrls in der Regel auch einfacher und vor allem auch ├╝bersichtlicher, wenn man eine TreeCtrl-Unterklasse baut, statt das TreeCtrl direkt zu verwenden.
Das ist auch so eine Konsequenz aus dem "Zen of Python", dass da unter anderem lautet: "Flat is better than nested."
Also lieber eine neue Toplevel-Klasse bauen, als alles in ein St├╝ck Code zu verschachteln.
Was das Sortieren angeht, schau dir mal die Doku zu wxTreeCtrl::OnCompareItems und wxTreeCtrl::SortChildren an.
In dem Fall w├╝rde ich aber einfach f├╝r jeden Zweig die Daten erst in eine Liste schreiben, die Liste dann sortieren und dann erst wieder einzeln AppendItem aufrufen.
Macht aber schon was her, der Baum.
Was mir so auf die Schnelle noch aufgefallen ist:
1. Statt:
tree.SetItemData(node, wx.TreeItemData(fatherData))
kann man auch schreiben:
tree.SetPyData(node, fatherData)
2. Die Items zeigen noch nicht an, ob sie Children haben.
Das hattest du schon gefunden?
http://wiki.wxpython.org/index.cgi/TreeControls