Автор оригинала: Mike Driscoll.
WXPYPHON Toolkit добавил контекстные менеджеры на свой код в нескольких годах назад, но по какой-то причине вы не видите очень много примеров их использования. В этой статье мы посмотрим на три примера контекстных менеджеров в Wxpython. Пользователь WXPYPHON был первым человеком, который предложил использовать контекстные менеджеры в Wxpython на Wxpython Список рассылки Отказ Мы начнем, прокатив наш собственный менеджер контекста, а затем посмотрите на пару примеров встроенных контекстных менеджеров в WxPython.
Создание собственного менеджера контекста WXPYPHON
Создание собственного контекстно-менеджера в Wxpython довольно легко. Мы будем использовать wx.filedialog Для нашего примера контекстно-менеджера.
В этом примере мы подкласс wx.filedialog И все, что мы делаем, это переопределить __enter__ и __exit__ методы. Это превратит наш экземпляр FileDialog в контекстный менеджер, когда мы назовем его с помощью Pythons с утверждение. Вы можете увидеть это в Onopenfile Обработчик событий внутри MyPanel класс. Теперь давайте посмотрим и посмотрим на некоторые из встроенных примеров WXPYPHON!
Контекстные менеджеры Wxpython
Пакет WXPYPHON поддерживает контекстные менеджеры во всем, что подклассы wx.dialog а также следующие виджеты:
- wx.busyinfo
- wx.busycursor
- wx.windowdisabler
- wx.lognull
- wx.dctextcolourchanger
- wx.dcpenchanger
- wx.dcbrushchanger
- wx.dcclipper
- wx.freeze/wx.thaw
Возможно, есть больше виджетов, но это был единственный список, который я мог найти на момент написания. Давайте посмотрим на пару примеры:
В приведенном выше коде мы имеем два примера контекста WXPYPHON. Первый в Onopencolordialog обработчик события. Здесь мы создаем экземпляр wx.colourdialog А затем возьмите выбранный цвет, если пользователь нажимает кнопку OK. Вторым примером является лишь немного более сложным в том, что он скрывает кадру перед отображением экземпляра Busininfo. Честно говоря, я думаю, что этот пример может быть немного улучшен, поместив кадр прячусь и покажу в сам менеджер контекста, но покинут это как упражнение для читателя, чтобы попробовать.
Упаковка
Контекстные менеджеры Wxpython довольно удобны, и они весело использовать. Я надеюсь, что вы найдете себя, используя их в своем собственном коде в ближайшее время. Будьте уверены и попробуйте некоторые из других контекстных менеджеров в WxPython, чтобы посмотреть, могут ли они подойдны ли они вашу кодовую базу или просто чтобы сделать ваш код немного очистителем.