54 УРОКА — Полный курс уроков по wxPython!

автор

wxPython – это кросс-платформенный GUI инструментарий для языка программирования Python. Он позволяет программистам Python создавать программы с надежным, функциональным графическим пользовательским интерфейсом просто и быстро. Он реализуется в качестве набора модулей расширения Python, которые заворачивают компоненты GUI популярной кросс-платформенной библиотеки wxWidgets, которая написана на С++.

Как Python и wxWidgets, wxPython находится в свободном доступе, это означает, что он бесплатный для всех и исходный код доступен для всех в целях изучения и улучшений. Каждый может внести изменения или улучшить проект.

wxPython является кросс-платформенным инструментарием. Это значит, что та же программа будет работать на нескольких платформах без изменений.

В настоящее время поддерживаются такие платформы, как Microsoft Windows, Mac OS X и macOS, а также Linux и другие unix системы с библиотеками GTK2 или GTK3. В большинстве случаев собственные виджеты используется на каждой платформе для обеспечения 100% внешнего вида и ощущения при работе с приложением.

Установка wxPython на Windows, Mac OS X, Linux

Набор инструментов wxPython GUI не встроен в Python, поэтому вам нужно будет установить его самостоятельно. К счастью, на большинстве платформ сделать это будет достаточно просто. В этой статье мы рассмотрим, как установить wxPython 4.0.

№1 Динамическое добавление и удаление виджетов

Создание и удаление виджетов являются довольно распространёнными заданиями, но большинство разработчиков не в восторге от него. Однако, wxPython способен значительно упростить данный процесс.

№2 Как сделать скриншот вашего приложения

Вы когда-нибудь задумывались о том, как было бы круто, если бы ваши wxPython приложения делали скриншоты себя? Что же, Андреа Гавана (один из главных разработчиков wxPython) нашёл отличный способ сделать это.

№3 Как вставить иконку в строку заголовка

Бывают случаи, когда вы хотите добавить что-то необычное в строку заголовка вашего приложения. Лучше всего для этого подойдут изображения. Большинство приложений для Windows имеют лого в верхнем левом углу строки заголовка.

№4 Как поставить фоновое изображение на приложение

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

№5 Сбрасываем цвет фона

Иногда вам нужно сменить цвет фона виджета панели или какого-то другого виджета интерфейса из набора инструментов wxPython. Это очень полезно для того, чтобы сделать сообщения об ошибках более заметными или чтобы отличать статусы в вашем приложении.

№6 Как создать «тёмный режим»?

На моей прошлой работе, мне как-то сказали, что мы должны будем добавить ещё одну возможность в нашем приложение. Заказчик хотел, чтобы появился «тёмный режим», так как во время использования приложения ночью, яркий свет буквально выжигал им глаза.

№7 Вступление в Pubsub

Несколько лет назад я написал туториал для wxPython 2.8. и его встроенного Pubsub модуля, который вы можете прочесть в моём блоге. Тогда же, новое API для Pubsub было добавлено в wxPython 2.8.11.0.

№8 Используем PyDispatcher вместо Pubsub

В прошлой статье про Pubsub мы рассмотрели, как использовать встроенную в wxPython версию Pubsub для того, чтобы отправлять сообщения внутри приложения. Сегодня же мы научимся альтернативному методу, который называется PyDispatcher.

№9 Как отключить кнопку «Далее» в Мастере Установки

Мастер установки – это отличная вещь, когда она работает как следует. Также он может быть очень надоедливым. Многие мастера установки не позволяют нажать на кнопку «Далее» до тех пор, пока вы не закончите настройку или же не заполните все необходимые поля.

№10 Обработка любых исключений

Если вы довольно часто используете wxPython, со временем вы поймёте, что некоторые исключения довольно сложно обработать. И причина подобной сложности кроется в том, что wxPython использует для C++ пакетов враппер, который называется wxWidgets.

№11 Контекстные менеджеры

Набор инструментов wxPython обзавёлся контекстными менеджерами несколько лет тому назад, но, по каким-то причинам, примеров их использования в приложениях можно найти лишь несколько.

№12 Конвертируем wx.DateTime в Python datetime

Набор инструментов wxPython содержит собственные средства для установки даты и времени. В большинстве случаев вы можете просто использовать Python datetime и временные модули и всё будет нормально.

№13 Создание бокса «О приложении»

Когда я создаю приложение, я обычно стремлюсь включить в него окно «О приложении», чтобы рассказать пользователям больше о приложении, о себе, передать приветы всем, кто помогал в его создании.

№14 Как создать диалоговое окно для логина

Я использую wxPython уже довольно давно, так что я заметил увеличение частоты появления некоторых вопросов. Одним из наиболее популярных является то, как создать окно для того, куда бы пользователь…

№15 Генерируем диалог из файла конфигурации

После написания статьи о чудесном пакете ConfigObj в своём блоге, один из моих читателей спросил о том, есть ли способ использовать файл конфигурации для генерирования диалога.

№16 Сохраняем данные в файле конфигурации

Существует масса способов поместить свои данные в своё приложение. Когда вы пишите пользовательский интерфейс, вы часто будете попадать ситуацию, в которой требуется пользовательских настроек.

№17 Прикрепляем несколько виджетов к одному хэндлэру

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

№18 Как запустить несколько хэндлеров событий

Есть несколько случаев, когда вам нужно запустить серию хэндлеров событий. И если в ваших программах вы пока это не используете, то возьмите на заметку – это действительно прекрасная возможность.

№19 Получаем названия события

Несколько лет назад я увидел пост на вебсайте StackOverflow, который показался мне интересным. Он содержал вопрос: как извлечь имя события из объекта события, такого как EVT_BUTTON, вместо порядкового номера события.

№20 Обнаруживаем ключевые и Char-события

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

№21 Как использовать Drag and Drop?

Большинство современных пользователей применяют перетаскивание практически инстинктивно. Я уверен, что вы хотя бы раз перетаскивали файл из одной папки в другую на этой неделе. К счастью, набор инструментов интерфейса wxPython обладает встроенным перетаскиванием.

№22 Как перетащить файл из вашего приложения в операционную систему

Вот что уж действительно будет часто использоваться, так это перетаскивание файлов из вашего обычного приложения в файловую систему. В прошлой статье про Drag and Drop вы видели пример перетаскивания файлов в ваше приложение.

№23 Как интерактивно редактировать ваш графический интерфейс используя reload()

Я наткнулся на интересный вопрос на StackOverflow несколько лет назад. Его автор спрашивал, как он может динамично писать программу, используя wxPython. Другими словами, он хотел получить возможность использовать встроенный в wxPython функционал reload().

№24 Извлекаем XML из RichTextCtrl

RichTextCtrl даёт вам возможность использовать стилизованный текст. Он также предоставляет несколько разных хэндлеров для сохранения данных, которые размещаются в нём в разных форматах. Одним из них оказался XML.

№25 Как создать Fade-in рамку/диалог

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

№26 Делаем ваш текст мигающим

На самой заре развития интернета, многие веб-сайты использовали баннеры с мигающими надписями, которые были призваны привлекать внимание посетителей. Во времена, когда я был разработчиком, мне даже пришлось сделать один такой в моём приложении.

№27 Запускает полноэкранный режим для окон

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

№28 Используем стили wx.Frame

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

№29 Создание иконок панели задач

Вы когда-нибудь интересовались тем, как создавать маленькие иконки в трэе Windows, которые будут отображаться в нижнем правом углу экрана?

№30 Сворачиваем приложение в трей

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

№31 Как получить дочерние виджеты из Sizer

В этой статье мы узнаем, как получить дочерние виджеты из объекта Sizer. В wxPython, вы скорее всего ожидаете, что речь пойдёт об использовании метода Sizer GetChildren().

№32 Как использовать буфер обмена

Все, кто ежедневно использует компьютер, знает, можно копировать и вставлять текст. Но вот многие не знают, что когда они что-то копируют, то оно попадает в место, которое называется «Буфер обмена».

№33 Изучаем как работает фокус в wxPython

Существуют всего два фокус события, применение которых я видел лично: wx.EVT_SET_FOCUS и wx.EVT_KILL_FOCUS. Событие EVT_SET_FOCUS запускается, когда виджет получает фокус, например, когда вы кликаете на пустую панель или же наводите курсор на виджет TextCtrl.

№34 Создаём укорачиватель ссылок

В далёком 2009, я был постоянным читателем Ars Technica. Они иногда постили статьи о Python, и я заметил одну из них, в которой говорилось об использовании PyGTK для сокращения ссылок.

№35 Использование ObjectListView вместо ListCtrl

Не буду спорить wxPython ListCtrl – это очень удобный виджет, но иногда его бывает крайне неудобно использовать. Это утверждение побудило Филипа Пайпера, миссионера из Мозамбика, написать ObjectListView, враппер для wx.ListCtrl.

№36 Делаем панель самоуничтожающейся

Несколько лет назад я наткнулся на вопрос на популярном сайте StackOverflow. Там спрашивали о том, как динамично уничтожать и создавать панели по прошествии определённого периода времени.

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

Каждые пару месяцев я встречаю тему, автор которой спрашивает, как ему переключаться между панелями в wxPython приложении, над которым он работает.

№38 Создание графики с PyPlot

Некоторые люди лучше усваивают информацию посредством практических занятий, а кому-то проще иметь визуальную симуляцию в качестве наглядного материала.

№39 Перенаправляем модуль логгинга Python в TextCtrl

Во время посмотра группы wxPython в Google или StackOverflow, я получил много интересных идей. В один прекрасный день, я увидел тему, в которой кто-то спрашивал о том, как заставить модуль логгинга Python вывести данные в файл и в TextCtrl.

№40 Перенаправление stdout/stderr

Довольно часто во время использования wxPython вам нужно перенаправить stdout или stderr в текстовый контроль. Может случиться такое, что вы запустите отдельное приложение с помощью wxPython, но вам хотелось бы видеть его исходящие данные в режиме реального времени.

№41 Создаём простой блокнот

Виджет wx.Notebook позволяет нам создавать пользовательский интерфейс с несколькими вкладками. Большинство примеров, которые вы могли бы найти в сети выглядят достаточно сложно, а новичкам стоило бы начинать с чего-то невероятно простого.

№42 Убеждаемся в том, что в каждой рамке по одной инстанции

В один прекрасный день я наткнулся на обсуждение на StackOverflow, в рамках которого парень пытался выяснить как открывать саб-фрейм лишь единожды.

№43 Помещаем объекты в виджеты ComboBox или ListBox

Эта статья появилась в результате обсуждения на IRC-канале wxPython, темой которой было помещение объектов в wx.ListBox. Позже, в этой же день, я наткнулся на аналогичный вопрос на StackOverflow, только там речь шла уже о wx.ComboBox.

№44 Синхронизируем скроллинг в двух таблицах

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

№45 Туториал по wx.Timer

wx.Timer позволяет разработчикам программного обеспечения запускать определённые фрагменты кода через определённые интервалы. В данной статье я рассмотрю несколько разных способов создания таймеров.

№46 Как обновлять индикатор из потока

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

№47 Использование потоков в wxPython

Если вы довольно давно используете графический интерфейс wxPython, то вы знаете, что иногда нам нужно запускать долгосрочные процессы, при чём делать это постоянно.

№48 Обновление вашего приложения с помощью Esky

В проект wxPython, начиная с версии 2.9 была добавлена возможность обновлять ваши приложения с помощью новой библиотеки, которая называется wx.lib.softwareupdate.

№49 Введение в XRC

Вы когда-либо задумывались о создании программы, которая будет использовать XML в wxPython? Что, я тоже никогда не задумывался, но способ есть и называется он XRC.

№50 Как создать сетку с помощью XRC

Давным-давно я пытался помочь одному из подписчиков почтовой рассылки wxPython разобраться в том, как использовать виджет сетки (wx.grid.Grid) через XRC.

№51 Введение в XRCed

Если вы новичок в использовании wxPython, но уже знакомы с XML, вам может пригодиться данная статья. Почему? Потому, что wxPython поддерживает XRC, один из форматов файла XML, описывающий графический интерфейс в XML.

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

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

№53 Как сделать так, чтобы ваши виджеты складывались

В wxPython 2.9, разработчики представили миру новый тип сайзеров, благодаря которому виджеты меняли положение в соответствии с тем, как пользователь изменяет размер окна. Они получили название wx.WrapSizer.

№54 Как получить выбранные ячейки сетки

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

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

Scroll Up