У меня есть фрейм WxPython, содержащий один элемент, например:
class Panel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.text = wx.StaticText(self, label='Panel 1')
У меня есть рамка, содержащая несколько панелей, включая эту, а размеры определяются размерами.
Я бы хотел, чтобы это StaticText
расширилось.
Использование BoxSizer
, содержащего только текст, и установка флага wx.EXPAND
делает свое дело, но кажется глупым использовать sizer только для одного элемента.
Есть ли более простое решение?
(Я мог бы просто добавить StaticText
в классификатор родительского фрейма напрямую, но для моего дизайна имеет смысл начать непосредственно с фрейма.)
Я только что понял, что при создании BoxSizer
с одним элементом не работает с wx.VERTICAL
:
class Panel1(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.BackgroundColour = 'red'
sizer = wx.BoxSizer(wx.VERTICAL)
self.Sizer = sizer
self.list = wx.ListBox(self, choices=[str(i) for i in xrange(100)])
sizer.Add(self.list, 0, wx.EXPAND)
sizer.Fit(self)
Конечно, с одним элементом все в порядке, но что, если я захочу добавить элемент по вертикали позже и все равно заставить их развернуться (например, когда окно пользователя развернуто)?
Редактировать: ах, я только что узнал, что пропорция должна быть использована для того, чтобы боксеры увеличивались в обоих направлениях (то есть замените 0 на 1 в вызове BoxSizer.Add
.)