wx.BoxSizer Problem

Plattformunabhängige GUIs mit wxWidgets.
Antworten
diablo75
User
Beiträge: 30
Registriert: Dienstag 8. September 2009, 23:12

Hi @ all
Habe leider schon wieder ein Problem :D diesmal mit dem wx.BoxSizer

Ich habe 2 Panels (hier funktioniert der 1 Sizer noch)
Ins linke Panel erstelle ich einen Treeview und hier liegt das Problem, das der Sizer einfach nicht das macht was ich will. Ich will das der TreeView den kompletten linken Panel einnimmt was er aber überhaupt nicht macht und nur ziemlich klein angezeigt wird. Hier mal der Code:

Code: Alles auswählen

mport wx
from TreeFrame import MainTree

class MainFrame(wx.Frame):
    def __init__(self,parent,id,title):
        # begin MainFrame.__init__
        wx.Frame.__init__(self,parent,id,title)
        self._icon = wx.EmptyIcon()
        self._icon.CopyFromBitmap(wx.Bitmap("face-glasses.png", wx.BITMAP_TYPE_ANY))
        self.SetIcon(self._icon)
        self.SetSize((1155, 640))
        
        mainpanel = wx.Panel(self,-1)
        secondpanel = wx.Panel(self, -1)
        mainpanel.SetBackgroundColour('Red')
        secondpanel.SetBackgroundColour('Blue')
        
        Tree = MainTree(mainpanel,-1)
  
#Hier funktioniert noch alles so wie ich es will
        sizer_1 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_1.Add(mainpanel,1, wx.EXPAND)
        sizer_1.Add(secondpanel,6, wx.EXPAND)
        self.SetSizer(sizer_1)
        self.Layout
        #End MainFrame.__init__  
Und hier das Problem:

Code: Alles auswählen

import wx

class MainTree(wx.TreeCtrl):
    def __init__(self,parent,id):
        wx.TreeCtrl.__init__(self,parent,id)

        self.tree = wx.TreeCtrl(self, 1, wx.DefaultPosition, (-1,-1), wx.TR_HIDE_ROOT|wx.TR_HAS_BUTTONS)
        root = self.tree.AddRoot('VersMax')
        kd = self.tree.AppendItem(root, 'Kunden')
        vertrag = self.tree.AppendItem(root, 'Vertraege')
        schaden = self.tree.AppendItem(root, 'Schaeden')
        
        self.tree.AppendItem(kd, 'Anlegen')
        self.tree.AppendItem(kd, 'Suchen')
        self.tree.AppendItem(vertrag, 'Suchen')
        self.tree.AppendItem(vertrag, 'Anlegen')
        self.tree.AppendItem(schaden, 'Suchen')
        self.tree.AppendItem(schaden, 'Anlegen')

        self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, id=1)
   
# Und hier passiert überhaupt nichts hab schon alles mögliche probiert
# aber nichts ändert sich     
        self.vbox = wx.BoxSizer(wx.VERTICAL)
        self.vbox.Add(self.tree, 1, wx.EXPAND)
        self.SetSizer(self.vbox)
           
    def OnSelChanged(self, event): # : TreeFrame.<event_handler>
        print "Event handler `OnSelChanged' not implemented!"
        event.Skip()
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Code: Alles auswählen

# -*- coding:  UTF-8 -*-
import wx

class MainTree(wx.TreeCtrl):
    def __init__(self,parent,id):
        wx.TreeCtrl.__init__(self,parent,id)
        root = self.AddRoot('VersMax')
        kd = self.AppendItem(root, 'Kunden')
        self.AppendItem(kd, 'Anlegen')

class TreePanel(wx.Panel):
    def __init__(self, parent, id):
        wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
        self.Bind(wx.EVT_SIZE, self.OnSize)
        
        self.tree = MainTree(self,-1)
        
    def OnSize(self, event):
        w,h = self.GetClientSizeTuple()
        self.tree.SetDimensions(0, 0, w, h)

class MainFrame(wx.Frame):
    def __init__(self,parent,id,title):
        wx.Frame.__init__(self,parent,id,title)
        
        mainpanel = TreePanel(self,-1)
        secondpanel = wx.Panel(self, -1)

        mainsizer = wx.BoxSizer(wx.HORIZONTAL)
        mainsizer.Add(mainpanel,0, wx.EXPAND)
        mainsizer.Add(secondpanel,6, wx.EXPAND)
        self.SetSizer(mainsizer )

app = wx.PySimpleApp()
frame = MainFrame(None, -1, 'title')
frame.Show()
app.MainLoop()
So funktioniert es schon mal besser.
Du solltest in einem TreeCtrl kein neuen Tree erzeugen, weil ja "self" schon der Baum ist.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
diablo75
User
Beiträge: 30
Registriert: Dienstag 8. September 2009, 23:12

Thx das wars.
War eindeutig zu viel des guten von mir :D
Antworten