Sizer Layout

Plattformunabhängige GUIs mit wxWidgets.
Antworten
KingZero
User
Beiträge: 5
Registriert: Samstag 17. Januar 2009, 15:27

Hey
Ich habe folgendes Problem. Ich möchte folgendes Layout realisieren:
Bild
Soweit so gut. Nun möchte ich aber das sich bei verändern der Fenstergröße nur die Listbox ausdehnt wird (unten/rechts) . Alle anderen Elemente sollen weder vergrößert werden noch die Position ändern. Dieses Layout habe ich mit dem wx.GridBagSizer gemacht. Hier auch nochmal der Source:

Code: Alles auswählen

        grid_sizer_1 = wx.GridBagSizer(3,3)
        #grid_sizer_1.SetEmptyCellSize((0,0))
        grid_sizer_1.Add(self.label_1, pos=(0,0))
        grid_sizer_1.Add(self.label_2, pos=(0,1))
        grid_sizer_1.Add(self.label_3, pos=(0,2))
        grid_sizer_1.Add(self.label_4, pos=(0,3))
        grid_sizer_1.Add(self.label_5, pos=(0,4))
        grid_sizer_1.Add(self.datepicker_ctrl_1, pos=(1,0))
        grid_sizer_1.Add(self.combo_box_1, pos=(1,1))
        grid_sizer_1.Add(self.combo_box_2, pos=(1,2))
        grid_sizer_1.Add(self.combo_box_3, pos=(1,3))
        grid_sizer_1.Add(self.text_ctrl_1, pos=(1,4))
        grid_sizer_1.Add(self.list_box_1, pos=(2,0), span=(15,25), flag=wx.EXPAND)
        grid_sizer_1.AddGrowableRow(2)
        grid_sizer_1.AddGrowableCol(0)
Hat jemand einen Tip für mich?
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Vielleicht in der Art?

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: cp1252 -*-

import wx

class MyPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, -1)
        sizer = wx.BoxSizer(wx.VERTICAL)
        grid_sizer = wx.GridBagSizer(3, 3)
        sizer.Add(grid_sizer, 0, wx.ALL, 5)
        self.label_list = []
        self.text_ctrl_list = []
        for i in xrange(5):
            label = wx.StaticText(self, -1, 'Text %i' % i)
            self.label_list.append(label)
            grid_sizer.Add(label, pos=(0, i))
            text_ctrl = wx.TextCtrl(self, -1, '', size=(80, -1))
            self.text_ctrl_list.append(text_ctrl)
            grid_sizer.Add(text_ctrl, pos=(1, i))
        self.list_box = wx.ListBox(self, -1)
        sizer.Add(self.list_box, 1, wx.EXPAND | wx.ALL, 5)
        sizer.Fit(self)
        self.SetSizer(sizer)

def main():
    app = wx.PySimpleApp(True)
    frame = wx.Frame(None, -1, 'Sizer-Test', size=(500, 500))
    panel = MyPanel(frame)
    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    main()
MfG
HWK
Antworten