Border resized sich beim Resize

Plattformunabhängige GUIs mit wxWidgets.
Antworten
medi
User
Beiträge: 1
Registriert: Montag 20. August 2007, 22:27

Dienstag 21. August 2007, 21:31

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
Antworten