Seite 1 von 1

wxPython - BoxSizer maximieren sich nicht richtig. Problem!!

Verfasst: Montag 29. September 2003, 08:00
von 2bock
Hi Leutz,

Also mein Problem besteht darin, dass beim maximieren meines Fensters die Oberfläche "zerwürfelt" wird. Um das besser nachvollziehen zu können habe ich mal ein Beispielprogramm im Anhang. Dies kann gleich so verwendet werden. Das "Programm" wird im maximierten Zustand geöffnet. Durch den Menüpunkt Start->Create werden 7 BoxSizer mit jeweils einem Panel erzeugt. Was nun zu sehen ist, ist ein übereinandergewürfel der Objekte. Wenn man jetzt die Ansicht. minimiert und dann wieder Maximiert. Ist das gewünschte Resultat zu sehen. Da ich den Usern aber nicht zumuten möchte immer ein minimieren und anschließendem maximieren des Fensters ertragen zu müssen, suche ich verzwifelt eine Lösung. Vielleicht kann mir einer von euch weiterhelfen.

Im Anhang der Beispielcode, der so herauskopiert werden kann und läuft.(müßt vielleicht Zeilen einrücken)

Code: Alles auswählen

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=wxTE_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=wxTE_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=wxTE_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_MULTILINE|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)
        #~ 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()

Re: wxPython - BoxSizer maximieren sich nicht richtig.

Verfasst: Montag 29. September 2003, 08:09
von oenone
2bock hat geschrieben:Im Anhang der Beispielcode, der so herauskopiert werden kann und läuft.(müßt vielleicht Zeilen einrücken)
benutze die code-tags (bei dir fehlt das anfangs tag)

auf bald
oenone

Verfasst: Montag 29. September 2003, 08:18
von 2bock
Hi oenone,

Code-tags? welche meinst Du
die Usr!....... python... die als aller erstes im Code stehen sollten? Oder meintest Du andere? :oops:

danke für Deine Antwort.

Verfasst: Montag 29. September 2003, 08:32
von 2bock
Ausser diesm Tag fällt mir jetzt echt nix ein. Welche Meintest Du denn sonst noch? Denn durch diesen Tag hat sich nichts verändert.
:cry:
#! /usr/bin/python

Verfasst: Montag 29. September 2003, 08:46
von Milan
diese hier [code][/code] fehlen in deinem Beitrag, weil der Quellcode ohne einrückungen unlesbar ist. Ich habs jetzt hineineditiert, aber achte später bitte mal darauf.

Die Lösung

Verfasst: Mittwoch 1. Oktober 2003, 09:51
von 2bock
Die Lösung liegt im FitSizer.

Da das Fenster maximiert war und brauchte ich nicht die Fit.. Methode, die die Größe des Fensters u.a. feststellt. Es reicht ein einfaches self.Layout() aus. Unten seht ihr nocheinmal den abgeänderten Code.

Bis dann 2bock :wink:


Code: Alles auswählen

...........
       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.Layout()[