Помещение BoxSizer в середине его панели - PullRequest
0 голосов
/ 06 октября 2011

Я написал некоторый код, который отображает wx.Frame, внутри которого есть wx.Panel, внутри которого есть jpg.Размер jpg равен размеру фрейма, поэтому при запуске программы пользователю предоставляется изображение, покрывающее все окно.Наложение поверх этой картинки и в центре панели Я хочу поставить wx.BoxSizer, содержащий различные виджеты.До сих пор у меня виден калибровщик, но, как ни старайся, я не могу сместить его из верхнего левого угла панели в центр.Нет сомнений, что существует множество способов сделать это с использованием сеток и границ, но прежде чем я выбрал этот путь, мне было интересно, если я что-то упустил, и есть ли команда, которую можно использовать для позиционирования в виджете вуказанная часть панели.

пс.Я также знаю, что мог бы сделать это, используя абсолютное позиционирование, но я хочу иметь возможность изменять размер окна, сохраняя размер классификатора в центре.

1 Ответ

1 голос
/ 06 октября 2011

Обычно вы не можете видеть классификатор. Но независимо от того, вы действительно не центрируете классификатор. Вы центрируете виджеты ВНУТРИ сортировщика. Поэтому, когда вы добавляете виджет в сортировщик, вы хотите сделать что-то вроде этого:

mySizer = wx.BoxSizer(wx.VERTICAL)
mySizer.Add(widget, 0, wx.CENTER|wx.ALL, 5)

Теперь, это будет только центрировать его по горизонтали. Если вы хотите, чтобы он находился в самом центре панели, создайте еще один BoxSizer, ориентированный горизонтально, и добавьте первый классификатор ко второму, также центрируя его.

hSizer = wx.BoxSizer(wx.HORIZONTAL)
hSizer.Add(mySizer, 0, wx.CENTER)
...