Seite 1 von 1

Border resized sich beim Resize

Verfasst: Dienstag 21. August 2007, 21:31
von medi
Hallo :D

Ich bin ein Noob was Python angeht und versuche gerade meine erste App zu erstellen. Klappt soweit auch ganz gut, nur mit den GUI Sachen hab ich noch meine Probleme.

Wenn ich das Frame (etwas schneller) resize, dann verändert sich auch die Border (wird dicker oder schmaler). Und ich hab keine Ahnung warum.
Ich hoffe hier kann mir jemand helfen.


Code Snippet:

Code: Alles auswählen

class MainWindow(wx.Frame):
    
    def __init__(self,parent,id, title):        
        wx.Frame.__init__(self,parent,wx.ID_ANY,title,size=(800,600),
                 style=(wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE) 
                        & ~ wx.MAXIMIZE_BOX & ~ wx.CLOSE_BOX)
        
        self.SetMinSize((800,600))     
                 
        panel = self.panel = wx.Panel(self, size=self.GetClientSize()) 
        
        gb = self.gb = wx.GridBagSizer(0, 1)
        gb.SetMinSize(panel.GetSize())
        
        x, y = self.GetClientSizeTuple()
        
        panelLeft = self.panel.panelLeft = wx.Panel(panel, size=(x-x/4, y), 
                                                    style=wx.BORDER_SUNKEN)
        panelLeft.canvas = MyCanvas(panelLeft, wx.ID_ANY)
        panelLeft.canvas.SetSize(panelLeft.GetSizeTuple())
        
        panelRight = self.panel.panelRight = scrolled.ScrolledPanel(panel, size=(x-(x-x/4), y), 
                                                       style=wx.BORDER_SUNKEN)
        
        panelRight.SetAutoLayout(True)
        panelRight.SetupScrolling()

        gb.Add(panelLeft, (0,0), flag=wx.EXPAND | wx.ALL)
        gb.Add(panelRight, (0,1), flag=wx.EXPAND | wx.ALL)
        
        panel.SetSizerAndFit(gb)     
        
        self.Bind(wx.EVT_SIZE, self.OnSize)
        self.Bind(wx.EVT_PAINT, self.OnPaint)
                
    def OnSize(self, evt):
        #self.Refresh()
        evt.Skip()
 
    def OnPaint(self, evt):                
        dc = wx.PaintDC(self)        
        x, y = self.GetClientSizeTuple()
        self.panel.SetSize(self.GetClientSizeTuple())
        self.panel.panelLeft.SetSize((x-x/4, y))
        self.panel.panelLeft.canvas.SetSize(self.panel.panelLeft.GetSizeTuple())
        self.panel.panelRight.SetSize((x-(x-x/4), y))

MFG
medi