Как подобрать размер панели wx к wx.Notebook (wxpython)
У меня есть рамка с панелью с записной книжкой на верхнем уровне, где каждая страница содержит разные панели:
panel = wx.Panel(self)
self._panel = panel
# Arrange the various views in a notebook
self._topNoteBook = wx.Notebook(panel)
self._installsView = InstallsViewPane(self._topNoteBook)
self._topNoteBook.AddPage(self._installsView, "Your CM Installations")
self._H2HHViewNoteBook = wx.Notebook(self._topNoteBook)
self._topNoteBook.AddPage(self._H2HHViewNoteBook, "Legacy H2HH View")
# Do stuff to create the contents of installsView and H2HHViewNoteBook ...
# [...]
# Attempt to size the panel/topNoteBook so that
# panel doesn't clip the contained notebook
# Cause layout to happen
sizer = wx.BoxSizer()
self._sizer = sizer
sizer.Add(self._topNoteBook, 1, wx.EXPAND)
panel.SetSizerAndFit(sizer)
Каждая из подпанелей имеет свои размеры должным образом, однако я не могу заставить основной каркас / панель расширяться, чтобы соответствовать верхнему ноутбуку. Или - может быть, моя проблема в том, что я не могу заставить верхний ноутбук расширяться до размеров его детей: я не могу точно сказать, в чем проблема, эффект тот же: основной корпус слишком мал для детских ноутбуков.
В результате дочерние панели выглядят хорошо, но общая рамка слишком мала: ее нужно развернуть вручную (что работает), чтобы увидеть все дочерние элементы:
Помогите?
1 ответ
Мне не очень ясно, с какой проблемой вы столкнулись, но я думаю, что вы хотите сделать, это позвонить:
Frame.SetSize((height, width))
Где высота и ширина являются целыми числами. Вы также можете попробовать использовать:
something.GetBestSize()
Это вернет кортеж целых чисел, которые лучше всего соответствуют виджетам Somethings.
Также я стараюсь избегать вызова SetSizerAndFit (sizer). Я обычно вызываю SetSizer (sizer) и Layout() для всего, что я пытаюсь измерить. На самом деле я не могу вспомнить, когда в последний раз я вызывал Fit(), потому что он может испортить макеты, если у вас есть несколько панелей в кадре.