wx.aui problem with last 2.7 preview
m.prosperi at libero.it
m.prosperi at libero.it
Tue Sep 26 12:26:00 PDT 2006
hi Robin, the following script works badly with the last preview of wxpy2.7 but worked fine with wxPython2.7-win32-unicode-2.7.0.0pre.20060712-py24.exe. When I resize the main MDI frame the children are not redrawn correctly
py2.4, winXP, sp2
Marco
---------------------------------------
import wx
import wx.aui
#----------------------------------------------------------------------
ID_New = wx.NewId()
ID_Exit = wx.NewId()
#----------------------------------------------------------------------
class MyParentFrame(wx.MDIParentFrame):
def __init__(self):
wx.MDIParentFrame.__init__(self, None, -1, "MDI Parent", size=(600,400))
self._mgr = wx.aui.FrameManager()
self._mgr.SetFrame(self)
self.winCount = 0
menu = wx.Menu()
menu.Append(ID_New, "&New Window")
menu.AppendSeparator()
menu.Append(ID_Exit, "E&xit")
menubar = wx.MenuBar()
menubar.Append(menu, "&File")
self.SetMenuBar(menubar)
self.CreateStatusBar()
self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.PaneInfo().
Name("test1").Caption("Pane Caption").Top())
self._mgr.Update()
self.Bind(wx.EVT_MENU, self.OnNewWindow, id=ID_New)
self.Bind(wx.EVT_MENU, self.OnExit, id=ID_Exit)
def CreateSizeReportCtrl(self, width=80, height=80):
ctrl = SizeReportCtrl(self, -1, wx.DefaultPosition,
wx.Size(width, height), self._mgr)
return ctrl
def OnExit(self, evt):
self.Close(True)
def OnNewWindow(self, evt):
self.winCount = self.winCount + 1
win = wx.MDIChildFrame(self, -1, "Child Window: %d" % self.winCount)
win.Show(True)
class SizeReportCtrl(wx.PyControl):
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition,
size=wx.DefaultSize, mgr=None):
wx.PyControl.__init__(self, parent, id, pos, size, wx.NO_BORDER)
self._mgr = mgr
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
def OnPaint(self, event):
dc = wx.PaintDC(self)
size = self.GetClientSize()
s = ("Size: %d x %d")%(size.x, size.y)
dc.SetFont(wx.NORMAL_FONT)
w, height = dc.GetTextExtent(s)
height = height + 3
dc.SetBrush(wx.WHITE_BRUSH)
dc.SetPen(wx.WHITE_PEN)
dc.DrawRectangle(0, 0, size.x, size.y)
dc.SetPen(wx.LIGHT_GREY_PEN)
dc.DrawLine(0, 0, size.x, size.y)
dc.DrawLine(0, size.y, size.x, 0)
dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2))
if self._mgr:
pi = self._mgr.GetPane(self)
s = ("Layer: %d")%pi.dock_layer
w, h = dc.GetTextExtent(s)
dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*1))
s = ("Dock: %d Row: %d")%(pi.dock_direction, pi.dock_row)
w, h = dc.GetTextExtent(s)
dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*2))
s = ("Position: %d")%pi.dock_pos
w, h = dc.GetTextExtent(s)
dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*3))
s = ("Proportion: %d")%pi.dock_proportion
w, h = dc.GetTextExtent(s)
dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*4))
def OnEraseBackground(self, event):
# intentionally empty
pass
def OnSize(self, event):
self.Refresh()
event.Skip()
#----------------------------------------------------------------------
if __name__ == '__main__':
class MyApp(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
frame = MyParentFrame()
frame.Show(True)
self.SetTopWindow(frame)
return True
app = MyApp(False)
app.MainLoop()
------------------------------------------------------
Salva il tuo preventivo Direct Line e assicurati lo sconto extra 5+5% sulla Rc auto, entro il 30 Settembre!
http://click.libero.it/direct_line3
More information about the wxpython-dev
mailing list