Поиск…


замечания

Что такое wxPython

Проще говоря, wxPython - это набор привязок к библиотеке GUI кросс-платформы wxWidgets C ++.

Хорошо, что такое wxWidgets

Библиотека wxWidgets предоставляет бесплатный, бесплатный и открытый исходный код, набор абстракций для различных элементов графического интерфейса, так что пользовательские элементы управления все еще используются, если они доступны, сохраняя естественный внешний вид, чувство и скорость. Таким образом, он обеспечивает абстракцию создания GUI и ряд других утилит в платформе, которые позволяют разработчикам создавать приложения для Windows, Mac OS X, Linux и других платформ с использованием единой базы кода. wxWidgets был запущен в 1992 году, и вы можете увидеть подробную историю здесь . Библиотека wxWidgets распространяется по лицензии wxWindows, которая основана на L-GPL, но с условием исключения . Предложение исключения позволяет связать ваше приложение динамически или статически с wxWidgets без требования распространять источник для вашего собственного приложения. Другими словами, вы можете использовать WxWidgets либо для бесплатных или коммерческих проектов, без каких - либо затрат. Лицензия поощряет вас возвращать усовершенствования, которые вы делаете в самой библиотеке wxWidgets.

Следует отметить, что wxWidgets содержит 100 классов для развертывания межплатформенного приложения :

  • Макет окна с использованием Sizers
  • Контексты устройств (наряду с ручками, кистями и шрифтами)
  • Комплексная система обработки событий
  • Средство просмотра справки HTML
  • Воспроизведение звука и видео
  • Поддержка Unicode и интернационализации
  • Архитектура документа / представления
  • Полиграфия
  • Розетки
  • Многопоточность
  • Манипуляция файлами и каталогами
  • Интерактивная и контекстно-зависимая справка
  • HTML-рендеринг
  • Основные контейнеры
  • Загрузка, сохранение, рисование и манипуляция изображения
  • Библиотека времени и таймеры
  • Обработка ошибок
  • Буфер обмена и перетаскивание

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

На протяжении многих лет библиотека wxWidgets создавала 4 отдельных сборки, помимо отладочных сборников из одного набора исходных кодов, статических и динамических библиотек, созданных как для ASCII, так и для Unicode. Он обычно доступен заранее в наиболее распространенных вариантах и ​​в качестве исходного кода для построения с различными параметрами целевой среды и с помощью инструментальной цепочки разработчиков C ++ с поддержкой многочисленных поддерживаемых цепей инструментов.

Связи python для этой библиотеки и некоторые дополнения образуют wxPython.

Вернуться к разделу «Что такое wxPython» (что мне это дает)?

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

  • Полный GUI-пакет, включая (но не ограничиваясь этим):
    • Windows (включая MDI Windows)
    • Волшебники
    • Рамки и мини-рамки
    • Диалоги, Стандартные, Расширенные и Пользовательские
    • Книги, деревья, сетки и элементы управления представлением данных
    • Датчики, слайдеры, спиннеры, анимация, буфер обмена, перетаскивание
    • Поддержка HTML, PDF и изображений
    • Компоненты графического интерфейса пользователя могут быть абсолютно позиционированы, но настоятельно рекомендуется использовать компоновку на основе sizer, которая поддерживает автоматическое определение размера и т. Д.
  • Cross Platform - поддержка графических интерфейсов для Windows, OS-X и Linux с единой базой кода без условных операторов в вашем коде
  • Родная скорость, внешний вид.
  • Быстрый прототип, test & debug - помните, что это python
  • Запустите и отредактируйте образцы практически всего в демонстрационном пакете.
  • Ясная лицензия на бесплатное использование даже в коммерческих продуктах.
  • При необходимости ваш графический интерфейс python может быть реорганизован в графический интерфейс wxWidgets C ++ позже, поскольку он уже использует его.
  • Большое, активное и полезное сообщество пользователей и разработчиков как в StackOverflow, так и в списках рассылки .

Обратите внимание: где сам python предоставляет механизм кросс-платформенного для реализации функций утилиты wxWidgets, повторение потока является хорошим примером , оно намеренно исключается из wxPython.

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

Ароматизаторы wxPython

ASCII против Unicode :

На протяжении многих лет, как и с wxWidgets , разработчикам приходилось выбирать между сборками ASCII и Unicode, а также требовать сборки для их конкретной версии python, а также 32/64 бит опций. Что касается wxPython 2.8.9, то ASCII только для сборки wxPython была отключена, поэтому поддержка Unicode всегда доступна.

Классический против Феникса :

Поскольку wxPython 3.0.0 существовала выпущенная «классическая» сборка wxPython и неизданная сборка Phoenix в настоящее время . Классическая сборка имеет тенденцию отставать от сборок wxWidgets с одинаковыми номерами, а пакет документации - это C ++ - он доступен для загрузки для разных платформ (см. Установка Classic ), в случае окон в качестве исполняемого установщика. Фиксированные привязки, которые в основном автоматически генерируются, должны более тесно взаимодействовать с сборками wxWidgets, а также включать документацию, специфичную для wxPython, - она ​​может быть создана из исходной или ночной сборки, поскольку колеса могут быть получены с помощью pip (см. Установка Phoenix ).

В wxPython, но не wxWidgets

wxPython расширяет библиотеку wxWidgets с помощью ряда функций, а всего лишь несколько, которые недоступны в wxWidgets:

  • Программисты Редакторы и оболочки: корка , кору , AlaCart & AlaMode , AlaModeTest
  • Интерпретатор и магия
  • Инспекция - это позволяет запустить окно для просмотра всех компонентов графического интерфейса вашего приложения.
  • Широкий набор демонстраций

Демо-скриншоты на Win10

Демо-версия wxPython со всеми филиалами закрыта: введите описание изображения здесь Одно из последних дополнений: введите описание изображения здесь Один из AGW, (Advanced Generic Widgets): введите описание изображения здесь

Установка wxPython Phoenix

wxPython Phoenix - это последняя версия wxPython (в настоящее время - сентябрь 2016 года без официального выпуска). Он поддерживает как Python 2 и Python 3. Вы можете загрузить снимок сборки (т.е. колесо Python) для вашей платформы и версии Python здесь .

wxPython Phoenix использует в значительной степени автоматизированный механизм для создания как привязок python для библиотеки wxWidgets, так и документации. Документация Phoenix wxPython специально создана для себя с использованием Sphinx . Это увеличивает ясность в отличие от документации на C ++ классической сборки, которая включает в себя множество перегрузок, которые недоступны в wxPython.

Python и pip должны быть установлены до того, как будет установлен wxPython Phoenix.

Вы можете использовать pip для установки версии wxPython Phoenix. Вот рекомендуемый метод:

python -m pip install --no-index --find-links=http://wxpython.org/Phoenix/snapshot-builds/ --trusted-host wxpython.org wxPython_Phoenix

Когда вы используете эту команду, pip также установит wxWidgets . Эта сложная команда pip, скорее всего, станет «pip install wxpython», когда официально выпущен Phoenix.

Примечание: wxPython Phoenix в настоящее время находится в стадии бета-версии и не имеет всех виджетов, которые имеет классическая версия.

Установка wxPython Classic

wxPython Classic - это сборка Python 2 библиотеки wxPython. Для генерации привязок python требуется большое количество ручных вмешательств, а документация - это просто документация wxWidgets, которая содержит некоторые аннотации к механизмам wxPython, так как обычно существует отсрочка между неделями и месяцами между новой версией wxWidgets и соответствующей версией wxPython ,

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

Последняя версия Classic 3.0.2.0

Windows

На веб-сайте установлены инсталляторы для Python 2.6 и 2.7 для 32-разрядных и 64-разрядных платформ Windows. Просто загрузите один из них и запустите их, чтобы установить его.

Примечание. Убедитесь, что вы загрузили установщик wxPython для правильного Python, который вы установили. Например, если у вас есть 32-битный Python 2.7, вам нужен 32-разрядный установщик wxPython

макинтош

Если у вас OSX 10.5 или выше , вы захотите загрузить и установить версию wxPython для какао . Версия Cocoa также поддерживает 64-битный Mac.

Если у вас Mac с версией OSX менее 10,5 , вам понадобится сборка Carbon .

Linux

Первое, что нужно проверить, если ваш менеджер пакетов платформы Linux (т.е. yum, apt-get и т. Д.), Чтобы увидеть, есть ли у него версия wxPython, которую вы можете установить. К сожалению, многие пакеты Linux для wxPython для версии 2.8.12.1 вместо 3.0.2.0. Если ваш менеджер пакетов не имеет последней версии, вам, вероятно, придется его самостоятельно создать.

Существуют инструкции по сборке для 3.0.2.0-Classic здесь

Привет, мир

Простой способ создания программы Hello World :

import wx
app = wx.App(redirect=False)
frame = wx.Frame(parent=None, id=wx.ID_ANY, title='Hello World')
frame.Show()
app.MainLoop()

Выход:

Привет, мир

Более типичным примером может служить подкласс wx.Frame :

import wx

class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, title='Hello World')
        self.Show()

if __name__ == '__main__':
    app = wx.App(redirect=False)
    frame = MyFrame()
    app.MainLoop()

Это также может быть переписано для использования суперпотока Python:

import wx  

class MyFrame(wx.Frame):
        
    def __init__(self, *args, **kwargs):
        """Constructor"""
        super(MyFrame, self).__init__(*args, **kwargs)
        self.Show()

if __name__ == '__main__':
    app = wx.App(False)
    frame = MyFrame(None, title='Hello World')
    app.MainLoop()

Что такое серия выпусков wxPython?

В проекте wxWidgets была принята модель выпуска, используемая в проекте Linux Kernel, где есть чередующиеся множества выпусков, где один набор считается «стабильным», а следующий набор считается «разработкой». Для wxWidgets «стабильная» и «разработка» не относятся к ошибкам, а к стабильности API и обратной совместимости.

  • Стабильность : на протяжении всей серии существующие API не изменяются, хотя могут быть добавлены новые методы не виртуального класса. Двоичная совместимость библиотек C ++ поддерживается, не допуская изменений, изменяющих размер или расположение классов и структур в памяти. Это может и часто накладывает ограничения на то, какие улучшения или исправления ошибок могут быть выполнены в стабильной серии выпусков, однако это действительно влияет только на уровень C ++, потому что в Python, поддерживающем обратную совместимость, есть несколько разные коннотации.

  • Разработка . Основной целью серии выпусков разработки является добавление новых функциональных возможностей или устранение проблем, которые не могут быть исправлены в стабильной серии из-за проблем с совместимостью двоичных файлов, все из которых состоят в создании следующей стабильной серии. Таким образом, на протяжении всей серии разработки существующие API-интерфейсы могут быть изменены или удалены по мере необходимости, хотя большую часть времени совместимость с исходным уровнем на C ++ поддерживается через устаревшие перегруженные функции или макросы и т. Д. Для wxPython это часто означает, что быть несовместимостью на уровне исходного кода, потому что нет перегрузки или макросов, и для поддержки новой версии API иногда старая версия должна быть удалена.

Из-за проблем с двоичной совместимостью последняя версия версии wxWidgets / wxPython часто может быть менее глючной, чем последняя версия последней стабильной версии. Однако существует компромисс, который API может менять или развиваться между версиями в серии разработки.

Как работают номера версий?

Для выпусков wxPython использует номер версии 4 компонента. Хотя это очень похоже на то, как номера версий используются в других проектах с открытым исходным кодом, есть несколько тонких различий. Поэтому для некоторых выпусков ABCD вы можете сделать следующее:

  1. Серия релизов : первые два компонента номера версии ( AB ) представляют собой серию выпусков, а если компонент B - четное число, то это стабильная серия, если это нечетное число, то это серия выпусков разработки. Например, 2.4, 2.6 и 2.8 стабильны, а API более или менее заморожен в каждой серии, а 2.3, 2.5 и 2.7 - это разработка, и API и функциональность могут меняться или развиваться по мере необходимости.

Из-за этого могут быть довольно большие изменения между одной стабильной последовательностью к следующей (скажем, от 2,4 до 2,6), и это часто отбрасывает людей, потому что в других проектах изменения этого магната могли бы привести к изменению первого компонента номера версии. Вместо этого вам следует подумать о том, что комбинация AB является основным номером версии.

  1. Номер выпуска : третий компонент номера версии (C) представляет собой один из релизов в серии выпусков. Например, 2.5.0, 2.5.1, 2.5.2, 2.5.3 ... - все выпуски в серии выпусков 2.5. (И так как в этом случае это серия разработки, тогда API и функциональность 2.5.3 эволюционировали, чтобы быть разными по местам, чем в 2.5.0.) Релизы C ++ wxWidgets обычно останавливаются здесь и производятся только выпуски ABC.

  2. Номер сублимации или выпуск wxPython: четвертый компонент номера версии (D) используется для представления субрекламы или инкрементных выпусков между официальными выпусками wxWidgets. Эти выпуски включают исправления для ошибок wxWidgets, которые могут быть обнаружены wxPython, или незначительные улучшения, которые важны для wxPython. Это не произвольный снимок wxWidgets, а скорее проверенная версия кода с исправлениями и улучшениями, еще недоступными из wxWidgets, кроме репозитория исходного кода.

Источник: https://wiki.wxpython.org/ReleaseSeries



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow