Элементарные проблемы с размерами
У меня есть следующий код, связанный с размерами:
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 для каждого, чтобы они растут и сжимаются в равной степени с горизонтальным размером классификатора.