Hello People,
I have a maximized frame which produces several panels which are wrapped by
7 BoxSizer objects. My problem is when i maximize the main frame the layout
is completely smashed. The only workaround i found yet is to put a
minimize(), maximize() pair into the code. With this manipulation the sizer
objects stretch themselves over the clientarea and the layout gets set up as
I expected. Has anybody some idea how to reach this behavior directly,
without the window manipulation code?
Thanks in advance for any help!
Thomas
Here is my code:
from wxPython.wx import *
import os.path,time
class Main(wxFrame):
def __init__(self, parent, ID, title,sRequestResult):
wxFrame.__init__(self, parent, ID, title, wxDefaultPosition,
wxDefaultSize)
self.menu_File = wxMenu()
self.menu_Config = wxMenu()
self.menu_About = wxMenu()
submenu = wxMenu()
menuBar = wxMenuBar()
self.menuBar = menuBar
self.menuBar.Append(self.menu_File, '&Start')
self.SetMenuBar(menuBar)
self.menu_File.Append(1001,'create','create')
EVT_MENU(self,1001, self.OnCreate)
def OnCreate(self,event):
MySize = self.GetClientSizeTuple()
Width = MySize[0]
Height = MySize[1]
self.panel2 = wxPanel(self,
-1,wxPoint(wxDEFAULT),wxSize(wxDEFAULT),style=wxTAB_TRAVERSAL)
self.panel3 = wxPanel(self, -1,wxPoint(wxDEFAULT),
wxSize(Width/2,450),style = wxTAB_TRAVERSAL)
self.panel4 =
wxPanel(self,-1,wxPoint(wxDEFAULT),wxSize(wxDEFAULT),style=wxTAB_TRAVERSAL)
self.panel5 = wxPanel(self, -1,wxPoint(wxDEFAULT),wxSize(2,Height))
self.panel6 = wxPanel(self, -1,wxPoint(Width/2,0),
wxSize(wxDEFAULT),style = wxTAB_TRAVERSAL)
self.panel7 = wxPanel(self,
-1,wxPoint(wxDEFAULT),wxSize(Width/2,450),style=wxTAB_TRAVERSAL)
self.panel8 = wxPanel(self,
-1,wxPoint(wxDEFAULT),wxSize(wxDEFAULT),style=wxTAB_TRAVERSAL)
self.line =wxStaticLine(self.panel5,-1,wxPoint(0) ,
wxSize(2,Height), style = wxLI_VERTICAL|wxSUNKEN_BORDER)
LabelBaust = wxStaticText(self.panel3, -1,
'Headline1',wxPoint(Width/7,30))
LabelSzen = wxStaticText(self.panel7, -1,
'Headline2',wxPoint(Width/6,30))
LabelBaust.SetForegroundColour('#0F498F')
LabelSzen.SetForegroundColour('#0F498F')
font = wxFont(18,wxSWISS , wxNORMAL, wxNORMAL,1)
LabelBaust.SetFont(font)
LabelSzen.SetFont(font)
# ------ Feldpositionen des Panel 3
···
--------------------------------------------------------------------
Height =100
self.Height = Height
leftTxtWidth =100
self.leftTxtWidth=leftTxtWidth
rightTxtWidth =300
self.rightTxtWidth = rightTxtWidth
leftLabWidth =30
rightLabWidth =230
TxtSizeWidth=120
TxtSizeHeight = 20
cbSizeWidth=100
cbSizeHeight = 20
l20 = wxStaticText(self.panel3, -1, 'label1',pos
=(leftLabWidth,Height+5))
t20 = wxTextCtrl(self.panel3, -1,
'string1',wxPoint(leftTxtWidth,Height),size=(TxtSizeWidth,TxtSizeHeight),
style=wxTE_READONLY|wxTE_RICH,name= 'ROAD_ID')
l21 = wxStaticText(self.panel3, -1, 'label2',pos
=(leftLabWidth,Height+35))
t21 = wxTextCtrl(self.panel3, -1, 'string2',
wxPoint(leftTxtWidth,Height+30),size=(TxtSizeWidth,TxtSizeHeight),style=wxTE
_READONLY|wxTE_RICH,name='FROM_TOWN')
l22 = wxStaticText(self.panel3, -1, 'label3',pos
=(rightLabWidth,Height+35))
t22 = wxTextCtrl(self.panel3, -1, 'string3',
wxPoint(rightTxtWidth,Height+30),size=(TxtSizeWidth,TxtSizeHeight),style=wxT
E_READONLY|wxTE_RICH,name='TO_TOWN')
l23 = wxStaticText(self.panel3, -1, 'label4:',pos
=(leftLabWidth,Height+65))
t23 = wxTextCtrl(self.panel3, -1, 'string4',
wxPoint(leftTxtWidth,Height+60),size=(TxtSizeWidth,TxtSizeHeight),style=wxTE
_READONLY|wxTE_RICH,name='BETWEEN')
l24 = wxStaticText(self.panel3, -1, 'label5',pos
=(rightLabWidth,Height+65))
t24 = wxTextCtrl(self.panel3, -1, 'string',
wxPoint(rightTxtWidth,Height+60),size=(TxtSizeWidth,TxtSizeHeight),style=wxT
E_READONLY|wxTE_RICH,name='AND')
l25 = wxStaticText(self.panel3, -1, 'label6',pos
=(leftLabWidth,Height+95))
t25 = wxTextCtrl(self.panel3, -1, 'string6',
wxPoint(leftTxtWidth,Height+90),size=(TxtSizeWidth,TxtSizeHeight),style=wxTE
_READONLY|wxTE_RICH,name='C_FROM_KM')
l26 = wxStaticText(self.panel3, -1, 'label7',pos
=(rightLabWidth,Height+95))
t26 = wxTextCtrl(self.panel3, -1, 'string',
wxPoint(rightTxtWidth,Height+90),size=(TxtSizeWidth,TxtSizeHeight),style=wxT
E_READONLY|wxTE_RICH,name='C_TO_KM')
l27 = wxStaticText(self.panel3, -1, 'label8',pos
=(leftLabWidth,Height+155))
t27 = wxTextCtrl(self.panel3, -1,
'string8',wxPoint(leftTxtWidth,Height+150),size=(TxtSizeWidth,TxtSizeHeight)
,style=wxTE_READONLY|wxTE_RICH ,name = 'RULE_FLAT')
l28 = wxStaticText(self.panel3, -1, 'label9',pos
=(rightLabWidth,Height+155))
t28 = wxTextCtrl(self.panel3, -1,
'string9',wxPoint(rightTxtWidth,Height+150),size=(TxtSizeWidth,TxtSizeHeight
),style=wxTE_READONLY|wxTE_RICH,name = 'C_REASON_FK')
l31 = wxStaticText(self.panel3, -1, 'string10',pos
=(leftLabWidth,Height+245))
t31 = wxTextCtrl(self.panel3, -1, '',
wxPoint(leftTxtWidth,Height+240),size=(320,60),style=wxTE_READONLY|wxTE_MULT
ILINE>wxTE_RICH,name='C_COMMENT')
szPos =60
rightComboLabel = wxStaticText(self.panel7, -1,
'combo1',wxPoint(szPos,Height+5),wxSize(80,20))
self.rightCombo = wxComboBox(self.panel7, -1,
'',wxPoint(szPos+100,Height),wxSize(45,cbSizeHeight),
style=wxCB_READONLY|wxCB_SORT,name = 'SZ_ID')
self.chkbox1=wxCheckBox(self.panel7, -1, 'chk1',
wxPoint(szPos,Height+50), style=wxNO_BORDER, name = 'SZ_VACANCES')
self.chkbox2=wxCheckBox(self.panel7, -1, 'chk2',
wxPoint(szPos,Height+80), style=wxNO_BORDER, name = 'SZ_ACTIVITY')
self.chkbox3=wxCheckBox(self.panel7, -1, 'chk3',
wxPoint(szPos,Height+110), style=wxNO_BORDER, name = 'SZ_WEATHER')
self.chkbox4=wxCheckBox(self.panel7, -1, 'chk4',
wxPoint(szPos,Height+140),style=wxNO_BORDER, name = 'SZ_EQUIPMENT')
self.chkbox5=wxCheckBox(self.panel7, -1, 'chk5',
wxPoint(szPos,Height+170), style=wxNO_BORDER, name = 'SZ_LANE_SWING')
self.chkbox6=wxCheckBox(self.panel7, -1, 'chk6',
wxPoint(szPos,Height+200), style=wxNO_BORDER, name = 'SZ_LEFT_BLOCK')
self.chkbox7=wxCheckBox(self.panel7, -1, 'chk7',
wxPoint(szPos,Height+230), style=wxNO_BORDER, name = 'SZ_RIGHT_BLOCK')
l32 = wxStaticText(self.panel7, -1, 'stringx',pos
=(szPos,Height+265))
t32 = wxTextCtrl(self.panel7, -1, 'stringx', pos
=(szPos+150,Height+260),size=(40,20),style=wxTE_RICH,name='SZ_HEAVY_VEHICLE_
ROTATION')
l321 = wxStaticText(self.panel7, -1, '%',pos
=(szPos+195,Height+265))
self.mainSizer = wxBoxSizer(wxHORIZONTAL)
self.leftSizer = wxBoxSizer(wxVERTICAL)
self.rightSizer = wxBoxSizer(wxVERTICAL)
self.leftSizer.Add(self.panel2,1,wxEXPAND)
self.leftSizer.Add(self.panel3,13,wxALIGN_CENTER_VERTICAL|wxEXPAND)
self.leftSizer.Add(self.panel4,1,wxEXPAND)
self.mainSizer.Add(self.leftSizer,1,wxEXPAND)
self.mainSizer.Add(self.panel5,0,wxEXPAND)
self.mainSizer.Add(self.rightSizer,1,wxEXPAND)
self.rightSizer.Add(self.panel6,1,wxEXPAND)
self.rightSizer.Add(self.panel7,13,wxALIGN_CENTER_VERTICAL|wxEXPAND)
self.rightSizer.Add(self.panel8,1,wxEXPAND)
self.SetAutoLayout(1)
self.SetSizer(self.mainSizer)
#~ self.Maximize(0) # uncomment this to see the right layout
directly
#~ self.Maximize(1)
self.mainSizer.Fit(self)
def OnTest2(self,event):
self.menuBar.EnableTop(1,0)
self.ReguestSend()
self.panel1.Show(0)
self.CharactInitData()
class MyApp(wxApp):
def OnInit(self):
frame = Main(NULL ,-1, 'problem')
if __name__ == '__main__':
import sys
app = wxPySimpleApp()
frame = Main(NULL ,-1, 'problem','')
frame.Maximize(1)
frame.Show(True)
frame.CenterOnParent(wxBOTH)
app.MainLoop()