Как переключаться между панелями — wxPython #37

автор

Каждые пару месяцев я встречаю тему, автор которой спрашивает, как ему переключаться между панелями в wxPython приложении, над которым он работает. Так как это довольно распространённый вопрос: за прошлую неделю меня 3 раза спрашивали об этом на моём IRC-канале, я написал короткий скрипт, выполняющий данную задачу.

Учтите, что в большинстве случаев пользователь сочтёт полезным лишь один из массы виджетов для ноутбука. Но, в любом случае, давайте научимся сделать это.

В данном примере мы будем использовать меню, чтобы переключаться между двумя панелями. Первая панель будет иметь только текстовый контроль, а вторая – только виджет сетки.

Вот первая панель:

И вот панель, на которую вы можете переключиться:

Теперь вы знаете как должен выглядеть конечный результат, так что давайте взглянем на код, позволяющий переключатся между панелями.

Код, который нас интересует, размещён в хэндлере события onSwitchPanels. Здесь мы используем условное выражение, чтобы проверить какая панель сейчас отображается, а затем скрываем её, чтобы отобразить вторую панель. Мы также задаём название окна, чтобы дать пользователю знать, какая панель сейчас отображается.

Также нам нужно вызвать метод панели под названием Layout(), чтобы сделать панели видимыми. В обратном случае, вы можете столкнуться со странными аномалиями отображения. Например, в панели не будет ничего отображаться до тех пор, пока вы значительно не измените её размер.

Итоги

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

Вам может быть интересно

Scroll Up