[wxPython] own maximize for wxMDIChildFrame - bugs?

W

w.p.

I use code below:
1) frame receive too many maximize events on create and on close child window - why?
2) how to catch key events for wxMDIParentFrame ?
3) childWin.SetSize() in OnMaximize send additional maximize event (?)
4) wxMDIChildFrame is initially visible!
5) sorry for english :)
6) wxPython 2.5.4.1 (Windows)

################################################################
import wx

#----------------------------------------------------------------------

class MyParentFrame(wx.MDIParentFrame):
def __init__(self):
wx.MDIParentFrame.__init__(self, None, -1, "MDI Parent", size=(600,400), style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_NO_WINDOW_MENU)
self.winCount = 0

self.CreateStatusBar()
self.MainTb=self.CreateToolBar(wx.TB_HORIZONTAL|wx.NO_BORDER|wx.TB_FLAT)
biblioBut=wx.Button(self.MainTb,1231,label="&Biblio")
newWndBut=wx.Button(self.MainTb,1213,label="&NewWnd")
wx.EVT_BUTTON(self,newWndBut.GetId(), self.OnNewWindow)
self.MainTb.AddControl(biblioBut)
self.MainTb.AddSeparator()
self.MainTb.AddControl(newWndBut)
self.MainTb.Realize()
self.SetToolBar(self.MainTb)
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDownParent)


def OnKeyDownParent(self, event):
print "OnKeyDownParent"

def OnKeyDownChild(self, event):
print "OnKeyDownChild"

def OnClose(self, evt):
self.GetActiveChild().Close(True)

def OnMaximize(self, event):
childWin = event.GetEventObject()
win = childWin.GetParent()
print "maximize "+self.GetTitle()
childWin.SetSize(wx.Size(win.GetClientSize().GetWidth(),win.GetClientSize().GetHeight()-1))
childWin.SetPosition(wx.Point(0,-1*win.GetClientAreaOrigin().y+1))
event.Skip()

def OnNewWindow(self,event):
self.winCount = self.winCount + 1
win = wx.MDIChildFrame(self, -1, "Child Window: %d" % self.winCount)
win.Maximize()
#win.Show() # !!!!!!!!!!!!!!!!!!

MainTb=win.CreateToolBar(wx.TB_HORIZONTAL|wx.NO_BORDER|wx.TB_FLAT)
SBut=wx.Button(MainTb,1213,label="&Func")
MainTb.AddControl(SBut)
MainTb.Realize()
win.SetToolBar(MainTb)

win.Bind(wx.EVT_MAXIMIZE, self.OnMaximize)
win.Bind(wx.EVT_KEY_DOWN, self.OnKeyDownChild)
win.Show(True)

#----------------------------------------------------------------------

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()
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top