Рубрики
Без рубрики

WXPYPHON: Работа со статусными барами

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Большинство приложений поставляются с строкой состояния. Строка состояния – виджет вдоль нижней части большинства приложений, которые вы используете каждый день. Они предоставляют вам информацию о какой линии вы редактируете в текстовом редакторе или когда вы в последний раз сохраняются. В WXPYPHON вы можете добавить строку состояния в свой кадр, используя wx.statusbar класс. В этой статье мы узнаем все о том, как использовать полосы состояния в Wxpython.

Нет строки состояния

Всегда хорошо начинать в начале. Поэтому мы начнем наше путешествие, глядя на какой-то пример код, который показывает, как выглядит кадр без строки состояния:

Когда вы запускаете этот код, вы должны увидеть что-то вроде следующего:

Ну, это было довольно просто. Давайте узнаем, как добавить строку состояния!

Добавление строки состояния

Конечно, не добавлять что-то было довольно просто. Но вы скоро найдете, что добавление простой однородной строки состояния также действительно легко в Wxpython. На самом деле, это действительно просто одна линия меняется! Однако сделать его немного более интереснее, мы также будем настроить текст статуса на что-то. Давайте посмотрим:

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

Вы заметите, что когда мы создали строку состояния, нам пришлось позвонить в рамку Createstatusbar () метод. Параметр, который мы передали в сообщаемом строке состояния, которую мы хотели только одного поля в строке состояния.

Создание многопользования строки состояния

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

В этом примере мы передаем номер два до Createstatusbar Создание двух одинаково размещенных разделов в нашей строке состояния. Тогда мы называем SetStatustext () Отказ Вы отметите, что первый вызов не указывает, какой раздел, чтобы поставить свой текст. Это потому, что по умолчанию равен нулю. Чтобы поставить текст в поле, кроме нуля, нам нужно быть более явным. Таким образом, во втором вызове SetStatustext () Мы передаем его один (1), который говорит WxPython, чтобы поставить текст во втором разделе строки состояния.

Изменение ширины секции

Вы можете указать ширину раздела через STAR BAR Setstatuswidths () Метод, который принимает список Python. Вы можете либо установить фиксированную ширину или переменную ширину в строке состояния. Для исправления вы просто проходите список целых чисел Python, где каждое целое число представляет размер поля в пикселях. Если вы предпочитаете выполнить вариабельную ширину, то вы будете использовать список, содержащий отрицательные числа. Например, если у вас было [-2, -1], первое поле займет 66% пространства, а вторая заняла оставшиеся 33%. Вы также можете смешивать фиксированную и переменную, как это: [-2, -1, 50]. В этом случае вы говорите WXPYPHON, чтобы занять 66% оставшегося помещения в первом поле, 33% оставшегося помещения во втором поле и 50 пикселей в 3-м поле.

Это может быть легче увидеть визуально, так что давайте посмотрим на пример!

В этом примере мы хотим, чтобы наше первое поле было ширину 100 пикселей со вторым полем, являющимся 300 пикселей. Когда вы запускаете код, вы должны увидеть что-то вроде этого:

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

Вы отметите, что мы заменили 300 пикселей с A -1, что означает, что второе поле должно принять все место после первых 100 пикселей. Вот скриншот:

На этот раз строка состояния не выглядит так странно. Вы можете изменить размер строки состояния настолько шире, сколько хотите.

Получение статуса

Вы также можете получить состояние строки состояния, используя статус Getstatustext () метод. Давайте посмотрим:

Вы отметите, что чтобы получить текст второго поля, нам пришлось явно сказать GetStatustextext, передавая его.

Изменение статуса текста

Мы уже смотрели на изменение текста строки состояния с SetStatustext () Отказ Тем не менее, есть еще два метода, которые стоит смотреть на: Pushstatustext () и Popstatustext () Отказ Они используют стек, чтобы при вызове pushstatustestext () он помещает текущее состояние в память в стеке и отображает строку, которую вы передали ему. Когда вы называете PopStatustext (), он восстановит ранее сохраненный текст. Однако, если вы вызовите setStatustext () между push и pop, то память будет стерта, а pop не восстановит строку состояния.

Давайте посмотрим на пример:

Обратите внимание, что pushstatustestext () и popstatustext () по умолчанию для нажатия и выскакивания первого поля. Вам нужно будет указать другое поле, чтобы нажать и попнуть, если вам нужно это сделать. Дайте этот код попробуй и посмотрите, что произойдет!

Упаковка

Эта статья покрыла много материалов. Вы узнали, как создать виджет статуса для вашего кадра. Вы узнали, как разделить строку состояния в несколько полей нескольких ширин. Вы также узнали, как получить текст из него и изменить текст тоже. Я также отмечу, что когда вы создаете меню