Элементарные проблемы с размерами

У меня есть следующий код, связанный с размерами:

import wx

class TableSelectPanel(wx.Panel):
    def __init__(self, parent, *args, **kwargs):
        wx.Panel.__init__(self, parent, *args, **kwargs)

        self.title = wx.StaticText(self, label="Select Table")
        self.tableList = wx.ListBox(self)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.title)
        sizer.Add(self.tableList, flag=wx.EXPAND)
        self.SetSizerAndFit(sizer)

class LobbyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None)

        self.tableSelect = TableSelectPanel(self)

        #window size
        self.SetMinSize((800, 600))
        self.SetMaxSize((800, 600))
        self.SetSize((800, 600))

        #sizers
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(self.tableSelect, flag=wx.EXPAND)

        self.SetSizer(sizer)

        self.Show(True)

Я ожидаю, что у меня будет окно 800x600 с wx.ListBox растяжение вертикально, чтобы соответствовать всей высоте стола. Однако, хотя у меня есть окно 800x600, wx.ListBox не распространяется на всю высоту. Скорее, кажется, что панель действительно растягивается, но список не имеет:

http://i48.tinypic.com/n2zybn.png

Что я сделал не так?

1 ответ

Решение

Установить proportion до 1:

sizer.Add(self.tableList, proportion=1, flag=wx.EXPAND)

Хотя значение этого параметра не определено в wxSizer, он используется в wxBoxSizer, чтобы указать, может ли дочерний элемент sizer изменить свой размер в основной ориентации wxBoxSizer - где 0 означает неизменяемое значение, а значение больше нуля интерпретируется относительно значения других потомков того же wxBoxSizer. Например, у вас может быть горизонтальный wxBoxSizer с тремя дочерними элементами, два из которых должны изменить свой размер с помощью sizer. Тогда два растягиваемых окна получат значение 1 для каждого, чтобы они растут и сжимаются в равной степени с горизонтальным размером классификатора.

Другие вопросы по тегам