Как поместить виджет в центр — wxPython #52

Уже многие годы, я натыкаюсь на вопросы людей о том, как поместить в виджет в центр рамки, панели или диалога. Решение довольно простое. В большинстве случаев, вам нужно просто поместить Horizontal BoxSizer внутрь Vertical BoxSizer с несколькими спейсерами. В данной статье я покажу три разных способа сделать это.

Используя поддельные спейсеры

Как поместить виджет в центр - wxPython #52

Когда я впервые узнал о том, как поместить виджет в центр, мне сказали, что я могу использовать кортеж для моего спейсера. Синтаксис выглядит немного странно, но это работает:

Здесь мы закрепляем горизонтальный BoxSizer внутри вертикального BoxSizer высшего уровня. Но мы окружаем горизонтальный сайзер двумя “â€oe”spacers, которые являются кортежами, обе пропорции которых заданы как 1, а также установлен флаг стиля wx.EXPAND.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Используя AddStretchSpacer

Сайзеры wxPython содержат метод AddStretchSpacer, который является хорошим удобным методом, делающим в точности то же, что происходило в примере выше. Давайте взглянем:

Вы заметите, что единственным отличием является использование метода AddStretchSpacer параллельно с prop-параметром, значением которого является 1.

Не используя закрепляющиеся сайзеры

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

Здесь мы просто создаём вертикальный сайзер, добавляем натяжной спейсер, а затем приказываем кнопке стать в центр, а затем добавляем ещё один натяжной спейсер. Этот код очень похож на предыдущий пример, за исключением того, что мы совсем не используем горизонтальный сайзер. Особая благодарность Yoriz за то, что он показал мне это.

Итоги

Теперь вы знаете несколько разных способов размещения виджета по центру в вашей wx.Frame или wx.Panel. Вам это очень пригодится в случаях, когда нужно сделать так, чтобы кнопка была размещена внизу окна по центру. Я выяснил, что центрирование виджетов – это довольно популярное явление, которое мне даже пришлось применить в своём приложении, так что иметь несколько разных путей выполнения данной задачи будет очень даже кстати.