wxPython - BoxSizer maximieren sich nicht richtig. Problem!!

Plattformunabhängige GUIs mit wxWidgets.
Benutzeravatar
2bock
User
Beiträge: 94
Registriert: Freitag 12. September 2003, 07:58
Wohnort: 50.9333300 / 6.3666700

wxPython - BoxSizer maximieren sich nicht richtig. Problem!!

Beitragvon 2bock » Montag 29. September 2003, 08:00

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()
Zuletzt geändert von 2bock am Montag 29. September 2003, 13:55, insgesamt 1-mal geändert.
Benutzeravatar
oenone
User
Beiträge: 75
Registriert: Mittwoch 27. August 2003, 14:39
Wohnort: 49°17'28N, 8°15'57E
Kontaktdaten:

Re: wxPython - BoxSizer maximieren sich nicht richtig.

Beitragvon oenone » Montag 29. September 2003, 08:09

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
Benutzeravatar
2bock
User
Beiträge: 94
Registriert: Freitag 12. September 2003, 07:58
Wohnort: 50.9333300 / 6.3666700

Beitragvon 2bock » Montag 29. September 2003, 08:18

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.
Benutzeravatar
2bock
User
Beiträge: 94
Registriert: Freitag 12. September 2003, 07:58
Wohnort: 50.9333300 / 6.3666700

Beitragvon 2bock » Montag 29. September 2003, 08:32

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
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Montag 29. September 2003, 08:46

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.
Benutzeravatar
2bock
User
Beiträge: 94
Registriert: Freitag 12. September 2003, 07:58
Wohnort: 50.9333300 / 6.3666700

Die Lösung

Beitragvon 2bock » Mittwoch 1. Oktober 2003, 09:51

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder