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

wxpython: как отключить следующую кнопку волшебника

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

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

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

Как вы в любом случае отключаете следующую кнопку Wizard?

Идея о том, что первоначальный человек имел, когда они разместили вопрос, заключался в том, что они хотели, чтобы пользователь заполнил два текстовых элемента управления, прежде чем быть в состоянии продолжить. Это означает, что нам нужно отключить следующую кнопку, пока оба текстовых виджетах не имеют что-то в них. Я придумал идею, где я использую WX.Timer, чтобы проверить текстовые элементы управления один раз, чтобы увидеть, есть ли у них данные в них. Если они сделают, то обработчик событий таймера включает следующую кнопку. Давайте посмотрим:

Давайте немного сломаемся. Первый класс мы посмотрим на MyWizard , где все действия все равно. MyWizard – это подкласс класса WXPYPHON. В __init__ Мы создаем страницу, и мы находим следующую кнопку, чтобы мы могли отключить ее. Затем мы создаем и начнем наш объект таймера во время привязки его к Onupdate метод. Наконец, мы запустим волшебник. Когда мы создаем страницу Wizard, мы создали создание Волшебство класс. Этот класс на самом деле довольно неясно. Во всяком случае, мы в конечном итоге создаем несколько виджетов, которые мы размещаем на странице Wizard. Единственный другой интересный бит в Onupdate метод. Здесь мы проверяем, ввел ли пользователь в обоих текстовых элементах управления.

Если у них есть, то мы нашли следующую кнопку, включите ее и остановите таймер. Здесь есть потенциальная ошибка. Что произойдет, если пользователь идет и удаляет какой-то контент после того, как они наполнили их обоих? Следующая кнопка не отключается снова. Вот обновленная версия Onupdate Метод, который исправляет этот вопрос:

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

Упаковка

Отключение следующей кнопки в мастере WXPYPHON не особенно сложно, это просто немного запутано. Было бы здорово, если API для Wizard Widget позволил немного больше доступа к стандартным виджетам, оно создает. Однако теперь вы знаете, как работать с ними и изменить свое государство. Используйте это знание мудро!

Связанное чтение

  • WxPython: Учебник из волшебника
  • WxPython: Как создать общий мастер