wxPython: вложенность GridBagSizers не охватывает? - PullRequest
0 голосов
/ 10 июля 2011

Я получил GridBagSizer (folderBagSizer) в существующем GridBagSizer (sizer) ... теперь я пытаюсь заполнить вложенный sizer (folderBagSizer) некоторыми метками. Они появляются под размерами ...?

# Create static box
self.sb_ExtractOptions = wx.StaticBox(panel, label="Options for Extract", 
    size=(100,100))
folderBoxSizer = wx.GridBagSizer(4, 9)
folderBoxSizer.Add(self.sb_ExtractOptions, pos=(0,0), span=(1,4), 
    flag=wx.EXPAND, border=10)

# Create the options
label_OptionsCreated = wx.StaticText(panel, label="Created:")
label_OptionsInserted = wx.StaticText(panel, label="Inserted:")
label_OptionsModified = wx.StaticText(panel, label="Modified:")

# Add them to the sizer (folderBoxSizer)
folderBoxSizer.Add(label_OptionsCreated, pos=(1, 0), flag=wx.LEFT|
    wx.ALIGN_CENTER_VERTICAL|wx.TOP, border=3)
folderBoxSizer.Add(label_OptionsInserted, pos=(2, 0), flag=wx.LEFT|
    wx.ALIGN_CENTER_VERTICAL|wx.TOP, border=3)
folderBoxSizer.Add(label_OptionsModified, pos=(3, 0), flag=wx.LEFT|
    wx.ALIGN_CENTER_VERTICAL|wx.TOP, border=3)

folderBoxSizer.AddGrowableCol(2)
sizer.Add(folderBoxSizer, pos=(2, 0), span=(1,6),flag=wx.TOP|wx.LEFT|wx.RIGHT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, border=10)


sizer.AddGrowableCol(2)
panel.SetSizer(sizer)

Спасибо заранее. :)

1 Ответ

0 голосов
/ 13 июля 2011

Разобрался, и, конечно, общая логическая проблема noob.

    # Create static box
    self.sb_ExtractOptions = wx.StaticBox(panel, label="Options for Extract", size=(100,100))
    sbs_ExtractOptions = wx.StaticBoxSizer(self.sb_ExtractOptions, wx.VERTICAL)
    OptionBoxSizer = wx.GridBagSizer(4, 9)

    # Create the options
    logicList = ['<', '<=', '=', '>', '>=']

    sizerIndexX = 0

    # Created
    label_OptionsCreated = wx.StaticText(panel, label="Created:")
    combo_LogicalCreated = wx.ComboBox(panel, 1, "", (25, 25), (60, 25), logicList, wx.CB_DROPDOWN)
    combo_LogicalCreated.Select(1)
    self.tc_DaysAgoCreated = wx.TextCtrl(panel)
    label_DaysAgoCreated = wx.StaticText(panel, label="days ago")
    # Add them to the sizer (optionBoxSizer)
    OptionBoxSizer.Add(label_OptionsCreated, pos=(sizerIndexX, 0), flag=wx.ALL|
        wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT, border=0)
    OptionBoxSizer.Add(combo_LogicalCreated, pos=(sizerIndexX,1), flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL, border=1)
    OptionBoxSizer.Add(self.tc_DaysAgoCreated, pos=(sizerIndexX, 2), flag=wx.ALL|
        wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT, border=0)
    OptionBoxSizer.Add(label_DaysAgoCreated, pos=(sizerIndexX,3), flag=wx.ALL|
        wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT, border=0)

<snip>

   sbs_ExtractOptions.Add(OptionBoxSizer, flag=wx.TOP|wx.LEFT|wx.RIGHT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, border=10)
    sizer.Add(sbs_ExtractOptions, pos=(2, 0), span=(1,6),flag=wx.TOP|wx.LEFT|wx.RIGHT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, border=10)

Я изначально добавлял sizer для статического блока в неправильный sizer - способ, которым он должен работать, должен:

  1. Создание статического поля (self.sb_ExtractOptions)
  2. Создать sizer, который будет жить внутри него, в данном случае это StaticBoxSizer. (sbs_ExtractOptions)
  3. Создание сетки для моих объектов в макете в пределах sizer (OptionBoxSizer)
  4. Создание элементов графического интерфейса и добавление их в OptionBoxSizer
  5. Добавьте OptionBoxSizer в StaticBoxSizer (т.е. добавьте то, что вы сделали на шаге 4 к шагу 2)
  6. Добавить StaticBoxSizer для основного классификатора панели (в данном случае sizer)
  7. Выпей пива или 5. И отпразднуй свой новый урок, как я это делал в уделяя ужасное внимание тому, что вы делаете!
...