Suche…


Bemerkungen

Was ist wxPython?

Einfach gesagt, wxPython ist ein Satz von Bindungen an die C ++ Cross Platform GUI-Bibliothek von wxWidgets .

Ok was ist wxWidgets

Die Bibliothek wxWidgets bietet eine kostenlose, kostenlose und kostenlose Quelle für Abstraktionen für die verschiedenen GUI-Elemente, sodass die systemeigenen Steuerelemente, sofern verfügbar, weiterhin verwendet werden und das native Aussehen, Verhalten und die Geschwindigkeit erhalten bleiben. Somit bietet es eine Abstraktion für die GUI-Erstellung und eine Reihe anderer Dienstprogramme auf einer Plattform, mit der Entwickler Anwendungen für Windows, Mac OS X, Linux und andere Plattformen mit einer einzigen Codebasis erstellen können. wxWidgets wurde 1992 gestartet und Sie können hier eine detaillierte Geschichte sehen . Die wxWidgets-Bibliothek wird unter der wxWindows-Lizenz verteilt, die auf der L-GPL basiert, jedoch mit einer Ausnahmeklausel . Mit der Ausnahmeklausel können Sie Ihre Anwendung entweder dynamisch oder statisch mit wxWidgets verknüpfen, ohne dass Sie die Quelle für Ihre eigene Anwendung verteilen müssen. Mit anderen Worten : Sie können entweder WxWidgets für ohne Kosten freie oder kommerzielle Projekte verwenden. Die Lizenz fordert Sie dazu auf, Verbesserungen an der Bibliothek wxWidgets selbst wiederzugeben.

Beachten Sie, dass wxWidgets Hunderte von Klassen für die plattformübergreifende Anwendungsentwicklung umfasst :

  • Fensterlayout mit Sizers
  • Gerätekontexte (zusammen mit Stiften, Pinseln und Schriftarten)
  • Umfassendes Event-Handling-System
  • HTML Help Viewer
  • Ton- und Videowiedergabe
  • Unterstützung für Unicode und Internationalisierung
  • Dokument / Ansichtsarchitektur
  • Drucken von Archiecture
  • Steckdosen
  • Multithreading
  • Datei- und Verzeichnismanipulation
  • Online- und kontextsensitive Hilfe
  • HTML-Rendering
  • Grundbehälter
  • Laden, Speichern, Zeichnen und Bearbeiten von Bildern
  • Datum-Uhrzeit-Bibliothek und Timer
  • Fehlerbehandlung
  • Zwischenablage und Drag-and-Drop

Beachten Sie, dass einige dieser Funktionen, z. B. Threading, eigentlich keine GUI-bezogenen Funktionen sind, sondern eine nützliche plattformübergreifende Abstraktion bieten, sodass im Falle von Threading beispielsweise ein Satz von Anwendungscode auf jeder unterstützten Plattform funktioniert.

Die wxWidgets-Bibliothek produzierte viele Jahre lang neben dem Debugging von Builds aus einem Satz Quellcode vier separate Builds, statische und dynamische Bibliotheken, die sowohl für ASCII als auch für Unicode erstellt wurden. Es ist in der Regel in den gebräuchlichsten Varianten vorkonfiguriert und als Quellcode mit den verschiedenen Optionen für die Zielumgebung und mit der Entwickler-C ++ - Werkzeugkette mit zahlreichen unterstützten Werkzeugketten zu erstellen.

Die Python-Bindungen für diese Bibliothek und einige Zusätze bilden wxPython.

Zurück zu Was ist wxPython (was gibt es mir)?

wxPython bietet Entwicklern die Möglichkeit, von einer plattformübergreifenden GUI-Bibliothek mit einer klaren Lizenz zu profitieren und gleichzeitig die Vorteile von Python zu nutzen. Wie wxWidgets und Python ist wxPython kostenlos, gratis und Open Source und kann sowohl in kostenlosen als auch in kommerziellen Projekten verwendet und vertrieben werden, ohne dass der Quellcode verteilt werden muss .

  • Vollständige GUI Suite einschließlich (aber nicht beschränkt auf):
    • Windows (einschließlich MDI Windows)
    • Assistenten
    • Rahmen & MiniFrames
    • Dialoge, Standard, Erweitert und Benutzerdefiniert
    • Steuerelemente für Bücher, Bäume, Raster und Daten
    • Messgeräte, Schieberegler, Spinner, Animationen, Zwischenablage, Drag & Drop
    • HTML-, PDF- und Image-Viewer-Unterstützung
    • GUI-Komponenten können absolut positioniert werden, es wird jedoch dringend empfohlen, ein auf Größenanpassungen basierendes Layout zu verwenden, das die automatische Größenanpassung unterstützt.
  • Plattformübergreifend - Unterstützung von GUIs für Windows, OS-X und Linux mit einer einzigen Codebasis ohne bedingte Anweisungen in Ihrem Code
  • Native Geschwindigkeit, Look & Feel.
  • Schneller Prototyp, Test und Debug - Denken Sie daran, dass dies Python ist
  • Führen Sie Samples von fast allem im Demo-Paket aus und bearbeiten Sie sie.
  • Klare Lizenz zur kostenlosen Nutzung auch in kommerziellen Produkten.
  • Bei Bedarf kann Ihre Python-GUI später in eine C ++ wxWidgets-GUI umgewandelt werden, da sie bereits verwendet wird.
  • Große, aktive und hilfreiche Benutzer- und Entwicklergemeinschaft sowohl auf StackOverflow als auch auf Mailinglisten .

Wenn Python selbst einen plattformübergreifenden Mechanismus zum Implementieren der Dienstprogrammfunktionen von wxWidgets bereitstellt, wobei das Threading wiederum ein gutes Beispiel ist , wird es absichtlich in wxPython weggelassen.

wxPython verfügt auch über eine sehr große Reihe von Demonstrationen, die innerhalb des Documents and Demo-Pakets ausgeführt, getestet und bearbeitet werden können.

Geschmacksrichtungen von wxPython

ASCII vs. Unicode :

Wie bei wxWidgets mussten sich die Entwickler viele Jahre zwischen ASCII- und Unicode-Builds entscheiden und einen Build für ihre spezifische Python-Version sowie die 32/64-Bit-Optionen benötigen. Ab etwa wxPython 2.8.9 wurde nur der ASCII-Build von wxPython gelöscht, sodass Unicode-Unterstützung immer verfügbar ist.

Klassik vs. Phönix :

Seit WxPython 3.0.0 gibt es den veröffentlichten "Classic" Build von WxPython und einen derzeit nicht veröffentlichten Phoenix-Build. Der klassische Build bleibt hinter den WxWidgets-Builds mit den gleichen Nummern zurück. Das Dokumentationspaket ist C ++. Es steht für verschiedene Plattformen zum Download zur Verfügung (siehe Installation von Classic ), falls es sich um ein ausführbares Installationsprogramm für Windows handelt. Die weitgehend automatisch generierten Phoenix-Bindungen sollten den WxWidgets-Builds näher folgen und auch wxPython-spezifische Dokumentation enthalten - sie können aus Quell- oder nächtlichen Builds erstellt werden, da Räder mit pip (siehe Installation von Phoenix ) erhältlich sind.

In wxPython aber nicht in wxWidgets

wxPython erweitert die wxWidgets-Bibliothek um eine Reihe von Funktionen. Im Folgenden sind einige Funktionen aufgeführt, die in wxWidgets nicht verfügbar sind:

Demo-Screenshots unter Win10

Die wxPython-Demo mit allen Zweigen geschlossen: Geben Sie hier die Bildbeschreibung ein Eine der letzten Ergänzungen: Geben Sie hier die Bildbeschreibung ein Eines der AGW (Advanced Generic Widgets): Geben Sie hier die Bildbeschreibung ein

Installation von wxPython Phoenix

wxPython Phoenix ist die neueste Version von wxPython (derzeit ohne offizielle Veröffentlichung im September 2016 ). Es unterstützt sowohl Python 2 und Python 3. Sie können einen Snapshot Build herunterladen (dh ein Python - Rad) für Ihre Plattform und Python - Version hier .

wxPython Phoenix verwendet einen weitgehend automatisierten Mechanismus zum Generieren der Python-Bindungen für die Bibliothek wxWidgets und der Dokumentation. Die Phoenix wxPython-Dokumentation wird speziell für sich selbst mithilfe von Sphinx erstellt . Dies erhöht die Übersichtlichkeit gegenüber der C ++ - Dokumentation des klassischen Builds, die viele Überladungen enthält, die in wxPython nicht verfügbar sind.

Python und pip müssen installiert sein, bevor wxPython Phoenix installiert werden kann.

Sie können pip verwenden, um die Phoenix-Version von wxPython zu installieren. Hier ist die derzeit empfohlene Methode:

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

Wenn Sie diesen Befehl verwenden, installiert pip auch wxWidgets . Dieser komplexe pip-Befehl wird wahrscheinlich zu "pip install wxpython", wenn Phoenix offiziell veröffentlicht wird.

Hinweis: wxPython Phoenix befindet sich derzeit in der Beta-Version und verfügt nicht über alle Widgets der Classic-Version.

Installation von wxPython Classic

wxPython Classic ist ein Python 2- Build der wxPython-Bibliothek. Die Generierung der Python-Bindungen erfordert eine Vielzahl von manuellen Eingriffen. Die Dokumentation ist einfach die Dokumentation zu wxWidgets, die einige Anmerkungen zu den Mechanismen von wxPython enthält. In der Regel dauert es Wochen bis Monate zwischen einer neuen Version von wxWidgets und der entsprechenden Veröffentlichung von wxPython .

Gehen Sie zur Download- Seite auf der wxPython-Website, um zu sehen, ob es bereits eine Version von wxPython gibt, die Sie für Ihre Plattform herunterladen können.

Die neueste Version von Classic ist 3.0.2.0

Windows

Auf der Website gibt es Installationsprogramme für Python 2.6 und 2.7 für 32-Bit- und 64-Bit-Windows-Plattformen. Laden Sie einfach eine davon herunter und führen Sie sie aus, um sie zu installieren.

Hinweis: Stellen Sie sicher, dass Sie ein wxPython-Installationsprogramm für das richtige Python heruntergeladen haben, das Sie installiert haben. Wenn Sie beispielsweise Python 2.7 32-Bit haben, möchten Sie ein wxPython 32-Bit-Installationsprogramm

Mac

Wenn Sie OSX 10.5 oder höher verwenden , sollten Sie die Cocoa- Version von wxPython herunterladen und installieren. Die Cocoa-Version unterstützt auch 64-Bit-Mac.

Wenn Sie einen Mac mit einer OSX-Version von weniger als 10.5 haben , benötigen Sie den Carbon- Build.

Linux

Zuerst sollten Sie überprüfen, ob der Paket-Manager Ihrer Linux-Plattform (z. B. yum, apt-get usw.) eine Version von wxPython enthält, die Sie installieren können. Leider gibt es viele Linux-Pakete für wxPython für Version 2.8.12.1 anstelle von 3.0.2.0. Wenn Ihr Paketmanager nicht über die neueste Version verfügt, müssen Sie sie wahrscheinlich selbst erstellen.

Es gibt bauen Anweisungen für 3.0.2.0-Classic hier

Hallo Welt

Eine einfache Möglichkeit, ein Hello World- Programm zu erstellen:

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

Ausgabe:

Hallo Weltausgabe

Ein typischeres Beispiel wäre die Unterklasse 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()

Dies kann auch neu geschrieben werden, um Pythons Super zu verwenden :

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()

Was ist eine wxPython-Versionsreihe?

Das wxWidgets-Projekt hat das vom Linux-Kernel-Projekt verwendete Veröffentlichungsmodell übernommen, bei dem abwechselnde Sätze von Versionen vorhanden sind, von denen ein Satz als "stabil" und der nächste Satz als "Entwicklung" betrachtet wird. Bei wxWidgets beziehen sich "stable" und "development" nicht auf Fehler, sondern auf die Stabilität der API und die Rückwärtskompatibilität.

  • Stabil : Für die Dauer der Serie werden vorhandene APIs nicht geändert, obwohl neue nicht virtuelle Klassenmethoden und solche hinzugefügt werden können. Die binäre Kompatibilität der C ++ - Bibliotheken wird beibehalten, indem keine Änderungen zugelassen werden, die die speicherinterne Größe oder das Layout der Klassen und Strukturen verändern. Dies kann und führt häufig zu Einschränkungen, welche Verbesserungen oder Fehlerbehebungen in einer stabilen Release-Serie durchgeführt werden können. Dies betrifft jedoch nur die C ++ - Ebene, da die Rückwärtskompatibilität von Python eine etwas andere Bedeutung hat.

  • Entwicklung : Der Hauptzweck der Entwicklungsserie von Releases besteht darin, neue Funktionen hinzuzufügen oder Probleme zu korrigieren, die aufgrund von Problemen mit der binären Kompatibilität nicht in einer stabilen Serie behoben werden konnten, um die nächste stabile Serie zu erstellen. Für die Dauer der bestehenden Entwicklungsserie können die APIs nach Bedarf geändert oder entfernt werden, obwohl die Kompatibilität der C ++ - Quelle auf Quellebene über veraltete überladene Funktionen oder Makros usw. aufrechterhalten wird. Für wxPython bedeutet dies häufig, dass dies der Fall ist Inkompatibilitäten auf Quellenebene sein, da es keine Überladung oder Makros gibt. Um die neue Version der API zu unterstützen, muss manchmal die alte Version entfernt werden.

Aufgrund der binären Kompatibilitätsprobleme kann die neueste Entwicklungsversion von wxWidgets / wxPython oft weniger fehlerbehaftet sein als die neueste Version der letzten stabilen Release-Serie. Allerdings gibt es die Möglichkeit, dass sich die APIs zwischen den Versionen der Entwicklungsserie ändern oder weiterentwickeln.

Wie funktionieren die Versionsnummern?

Für Releases verwendet wxPython eine Versionsnummer mit 4 Komponenten. Dies sieht zwar sehr ähnlich aus, wie Versionsnummern in anderen Open Source-Projekten verwendet werden, es gibt jedoch einige Unterschiede. Für ein Release ABCD können Sie also Folgendes ableiten:

  1. Release-Serie : Die ersten beiden Komponenten der Versionsnummer ( AB ) repräsentieren die Release-Serie. Wenn die B- Komponente eine gerade Zahl ist, handelt es sich um eine stabile Serie. Wenn es sich um eine ungerade Zahl handelt, handelt es sich um eine Entwicklungs-Release-Serie. Zum Beispiel sind 2.4, 2.6 und 2.8 stabil und die API ist in jeder Serie mehr oder weniger eingefroren, und 2.3, 2.5 und 2.7 sind in der Entwicklung und die API und Funktionalität kann sich je nach Bedarf ändern oder weiterentwickeln.

Aus diesem Grund kann es sehr große Änderungen zwischen einer stabilen Serie zur nächsten geben (z. B. 2.4 bis 2.6), und dies führt häufig zu einer Ablenkung, da die Änderungen dieser Größe in anderen Projekten dazu geführt hätten, dass sich die erste Komponente der Versionsnummer geändert hat. Stattdessen sollten Sie sich die Kombination von AB als Hauptnummer der Version vorstellen.

  1. Release Nummer: Die dritte Komponente der Versionsnummer (C) stellt eine der Meldungen in einer Release - Serie. Zum Beispiel sind 2.5.0, 2.5.1, 2.5.2, 2.5.3 ... alle Releases der 2.5-Release-Serie. (Und da es sich in diesem Fall um eine Entwicklungsserie handelt, haben sich die API und die Funktionalität von 2.5.3 örtlich anders entwickelt als in 2.5.0.) Die C ++ - Versionen von wxWidgets hören hier normalerweise auf und es werden nur ABC-Releases erstellt.

  2. Subrelease-Nummer oder wxPython-Release: Die vierte Komponente der Versionsnummer (D) wird verwendet, um ein Subrelease oder inkrementelle Releases zwischen den offiziellen wxWidgets-Releases darzustellen. Diese Versionen enthalten Korrekturen für wxWidgets-Fehler, die wxPython möglicherweise aufgedeckt haben, oder kleinere Verbesserungen, die für wxPython wichtig sind. Dies ist kein beliebiger wxWidgets-Snapshot, sondern eine getestete Version des Codes mit Korrekturen und Verbesserungen, die in wxWidgets noch nicht verfügbar sind, außer im Quellcode-Repository.

Quelle: https://wiki.wxpython.org/ReleaseSeries



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow