Sök…


Anmärkningar

Vad är wxPython

Enkelt uttryckt wxPython är en uppsättning bindningar till wxWidgets C ++ Cross Platform GUI-biblioteket.

Ok vad är wxWidgets

WxWidgets-biblioteket tillhandahåller en gratis, gratis & öppen källkod, uppsättning abstraktioner för de olika GUI-elementen så att de ursprungliga kontrollerna fortfarande används, där de finns tillgängliga, bibehåller det ursprungliga utseendet, känslan och hastigheten. Som sådan ger det en abstraktion för skapandet av GUI och ett antal andra verktyg i en plattform som låter utvecklare skapa applikationer för Windows, Mac OS X, Linux och andra plattformar med en enda kodbas. wxWidgets startades 1992 och du kan se en detaljerad historik här . WxWidgets-biblioteket distribueras under wxWindows License, som är baserat på L-GPL men med ett undantagsklausul . Undantagsklausulen låter dig koppla din applikation antingen dynamiskt eller statiskt till wxWidgets utan kravet på att distribuera källan för din egen applikation. Med andra ord kan du använda wxWidgets för antingen gratis eller kommersiella projekt, utan kostnad . Licensen uppmuntrar dig att ge tillbaka förbättringar du gör till wxWidgets-biblioteket själv.

Höjdpunkterna, notera att wxWidgets omfattar 100-tal klasser för utveckling av plattformsapplikationer :

  • Fönsterlayout med hjälp av storleken
  • Enhetskontekster (tillsammans med pennor, penslar och teckensnitt)
  • Omfattande evenemangshanteringssystem
  • HTML Help Viewer
  • Ljud- och videouppspelning
  • Unicode- och internationaliseringsstöd
  • Dokument / visa arkitektur
  • Skriva ut archiecture
  • Sockets
  • multithreading
  • Fil- och katalogmanipulering
  • Online- och kontextkänslig hjälp
  • HTML-rendering
  • Grundbehållare
  • Ladda, spara, rita och manipulera bilder
  • Date-Time Library and Timers
  • Felhantering
  • Urklipp och dra-och-släpp

Observera att vissa av dessa anläggningar, t.ex. gängning, inte egentligen är GUI-relaterade utan ger en användbar tvärplattformabstraktion så att, i fallet med gängning till exempel, en uppsättning applikationskod fungerar på vilken plattform som helst.

Under många år producerade wxWidgets-biblioteket fyra separata builds, förutom felsökningsbyggnader från en uppsättning källkod, statiska och dynamiska bibliotek byggda för både ASCII och Unicode. Det är vanligtvis tillgängligt förbyggt i de vanligaste varianterna och som källkod för att bygga med olika alternativ för målmiljön och med utvecklare C ++ verktygskedja med många verktygskedjor som stöds.

Pythonbindningarna för detta bibliotek och vissa tillägg bildar wxPython.

Tillbaka till Vad är wxPython, (vad ger det mig)?

wxPython ger en utvecklare ett sätt att dra nytta av ett GUI-bibliotek med flera plattformar, med en klar licens, samtidigt som de ger fördelarna med Python. Liksom wxWidgets och Python är wxPython gratis, gratis & öppen källkod och tillgänglig för användning och distribution i både gratis och kommersiella projekt utan ett resulterande krav på att distribuera din källkod .

  • Full GUI-svit inklusive, (men inte begränsat till):
    • Windows (inklusive MDI Windows)
    • Wizards
    • Ramar & MiniFrames
    • Dialoger, standard, avancerad och anpassad
    • Böcker, träd, rutnät och datavynkontroller
    • Mätare, reglage, spinnare, animationer, urklipp, dra & släpp
    • HTML-, PDF- och bildvisningsstöd
    • GUI-komponenter kan vara absolut positionerade men det rekommenderas starkt att använda storleksbaserad layout som stöder automatisk storlek, etc.
  • Cross Platform - Support GUIs för Windows, OS-X & Linux med en enda kodbas utan villkorade påståenden i din kod
  • Native speed, look & feel.
  • Snabb prototyp, test & felsökning - kom ihåg att det här är python
  • Kör & redigera prover av nästan allt i demopaketet.
  • Tydlig licens för gratis användning även i kommersiella produkter.
  • Om det behövs kan din Python GUI återinföras till en C ++ wxWidgets GUI senare eftersom den redan använder den.
  • Stort, aktivt och användbart community för användare och utvecklare både på StackOverflow- och adresslistor .

Observera att där python själv tillhandahåller en tvärplattformmekanism för att implementera verktygsfunktionerna för wxWidgets, och gängning igen är ett bra exempel , utelämnas det avsiktligt från wxPython.

wxPython har också en mycket stor serie demonstrationer som kan köras, testas och redigeras från dokument- och demopaketet.

Smaker av wxPython

ASCII vs Unicode :

Under många år, som med wxWidgets , var utvecklarna tvungna att välja mellan ASCII och Unicode builds och behövde en build för deras specifika version av python såväl som 32/64 bitalternativ. Från och med wxPython 2.8.9 har ASCII bara byggandet av wxPython tappats så Unicode-stöd är alltid tillgängligt.

Classic vs. Phoenix :

Sedan wxPython 3.0.0 har det funnits den släppta "Classic" -byggnaden av wxPython och en Phoenix som för närvarande inte har släppts . Den klassiska byggnaden tenderar att hålla sig bakom wxWidgets-konstruktionen med samma nummer och dokumentationspaketet är C ++ - det är tillgängligt för nedladdning för olika plattformar, (se Installation av Classic ), i fallet med windows som en körbar installerare. Phoenix-bindningarna, som till stor del genereras automatiskt, bör följa närmare på wxWidgets-byggnaderna och även inkludera wxPython-specifik dokumentation - den är byggbar från källa eller nattliga byggningar eftersom hjul kan erhållas med pip , (se Installation av Phoenix ).

I wxPython men inte wxWidgets

wxPython utökar wxWidgets-biblioteket med ett antal funktioner, följande är bara några få, som inte är tillgängliga i wxWidgets:

  • Programmerare Redaktörer & skal: skorpa , skorpor , AlaCart & AlaMode , AlaModeTest
  • Tolk och magi
  • Inspektion - detta låter dig starta ett fönster för att bläddra bland alla dina applikations GUI-komponenter.
  • En omfattande uppsättning demonstrationer

Demo-skärmbilder på Win10

WxPython-demon med alla grenar stängda: ange bildbeskrivning här En av de senaste tilläggena: ange bildbeskrivning här En av AGW, (Advanced Generic Widgets): ange bildbeskrivning här

Installation av wxPython Phoenix

wxPython Phoenix är den senaste versionen av wxPython, (för närvarande september 2016 utan officiell utgåva). Det stöder både Python 2 och Python 3. Du kan ladda ner en stillbildsbyggnad (dvs. ett Python-hjul) för din plattform och Python-version här .

wxPython Phoenix använder en till stor del automatiserad mekanism för att generera både pythonbindningar för wxWidgets-biblioteket och dokumentationen. Phoenix wxPython-dokumentation genereras specifikt för sig själv med hjälp av Sphinx . Detta ökar tydligheten i motsats till C ++ -dokumentationen av den klassiska builden, som inkluderar många överbelastningar som inte är tillgängliga i wxPython.

Python och pip måste installeras innan wxPython Phoenix kan installeras.

Du kan använda pip för att installera Phoenix-versionen av wxPython. Här är den rekommenderade metoden för närvarande:

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

När du använder detta kommando installerar pip också wxWidgets . Detta komplexa pip-kommando kommer sannolikt att bli 'pip install wxpython' när Phoenix officiellt släpps.

Obs! WxPython Phoenix finns för närvarande i beta och har inte alla widgets som Classic-versionen har.

Installation av wxPython Classic

wxPython Classic är en Python 2- konstruktion av wxPython-biblioteket. Generering av pythonbindningar kräver ett stort antal manuella ingripanden och dokumentationen är helt enkelt wxWidgets-dokumentationen som innehåller några kommentarer på wxPython-mekanismer som sådan finns det normalt en försening på veckor till månader mellan en ny utgåva av wxWidgets och matchande frisläppande av wxPython .

Gå till nedladdningssidan på wxPython-webbplatsen för att se om det redan finns en version av wxPython som du kan ladda ner för din plattform.

Den senaste versionen av Classic är 3.0.2.0

Windows

Det finns installatörer för Python 2.6 och 2.7 för 32-bitars och 64-bitars Windows-plattformar på webbplatsen. Ladda bara ner en av dessa och kör dem för att installera den.

Obs: Se till att du laddar ner ett wxPython-installationsprogram för rätt Python som du har installerat. Om du till exempel har 32-bitars Python 2.7, vill du ha ett 32-bitars installationsprogram för wxPython

Mac

Om du har OSX 10.5 eller högre , vill du ladda ner och installera Cocoa- versionen av wxPython. Cocoa-versionen stöder också 64-bitars Mac.

Om du har en Mac med en version av OSX mindre än 10,5 , vill du ha Carbon- byggandet.

Linux

Det första du ska kontrollera om din Linux-plattforms pakethanterare (dvs. yum, apt-get, etc) för att se om den har en version av wxPython som du kan installera. Tyvärr är många Linux-paket för wxPython för version 2.8.12.1 istället för 3.0.2.0. Om din paketansvarig inte har den senaste versionen måste du förmodligen bygga den själv.

Det finns bygginstruktioner för 3.0.2.0-Classic här

Hej världen

Ett enkelt sätt att skapa ett Hello World- program:

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

Produktion:

Hello World-produktion

Ett mer typiskt exempel skulle vara att underklassa 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()

Detta kan också skrivas om för att använda Pythons super :

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

Vad är en wxPython Release-serie?

Projektet wxWidgets har antagit släppmodellen som används av Linux Kernel-projektet där det finns växlande uppsättningar med utgåvor där en uppsättning betraktas som "stabil" och nästa uppsättning betraktas som "utveckling." För wxWidgets hänvisar "stabil" och "utveckling" inte till bugginess utan till API: s stabilitet och bakåtkompatibilitet.

  • Stabil : Under seriens varaktighet ändras inte existerande API: er, även om nya icke-virtuella klassmetoder och sådana kan läggas till. Binärkompatibilitet för C ++ libs bibehålls genom att inte tillåta några ändringar som modifierar minnesstorleken eller layouten för klasserna och strukturerna. Detta kan och ofta sätter begränsningar för vilken typ av förbättringar eller buggfixar som kan utföras i en stabil release-serie, men detta påverkar egentligen bara C ++ -skiktet eftersom i Python är bakåtkompatibla har något annorlunda konnotationer.

  • Utveckling : Huvudsyftet med utvecklingsserien med utgåvor är att lägga till ny funktionalitet eller att korrigera problem som inte kunde korrigeras i en stabil serie på grund av binära kompatibilitetsproblem, allt i ett försök att skapa nästa stabila serie. Så under varaktigheten av de befintliga utvecklingsserierna tillåts API: erna att ändras eller tas bort efter behov, även om merparten av tiden C ++ källnivåkompatibilitet upprätthålls via avskrivna överbelastade funktioner eller makron, etc. För wxPython betyder detta ofta att det kommer att vara inkompatibilitet på källnivå eftersom det inte finns överbelastning eller makron, och för att stödja den nya versionen av API måste ibland den gamla versionen tas bort.

På grund av problem med binär kompatibilitet kan den senaste utvecklingsversionen av wxWidgets / wxPython ofta vara mindre buggy än den senaste versionen av den senaste stabila versionen. Men det är avvägningen att API: erna kan förändras eller utvecklas mellan versioner i utvecklingsserien.

Hur fungerar versionerna?

För utgåvor använder wxPython ett versionskomponentnummer. Även om detta ser mycket ut som hur versionnumren används i andra Open Source-projekt, finns det några subtila skillnader. Så för en viss utgåva ABCD kan du dra följande:

  1. Släppserie : De två första komponenterna i versionnumret ( AB ) representerar släppserien, och om B- komponenten är ett jämnt nummer är det en stabil serie, om det är ett udda nummer är det en utvecklingsserie. Exempelvis är 2.4, 2.6 och 2.8 stabila och API är mer eller mindre fryst i varje serie, och 2.3, 2.5 och 2.7 är utveckling och API och funktionalitet får ändras eller utvecklas vid behov.

På grund av detta kan det vara ganska stora förändringar mellan en stabil serie till nästa (säg 2.4 till 2.6) och detta kasta ofta bort folk eftersom i andra projekt förändringar av den magneten skulle ha fått den första komponenten i versionnumret att ändras. Istället ska du tänka på kombinationen av AB som den största versionen av versionen.

  1. Släppnummer : Den tredje komponenten i versionnumret (C) representerar en av utgåvorna i en släppserie. Till exempel är 2.5.0, 2.5.1, 2.5.2, 2.5.3 ... alla utgåvor i 2.5-serien. (Och eftersom det i detta fall är en utvecklingsserie så har API och funktionalitet i 2.5.3 utvecklats till att vara annorlunda på platser än i 2.5.0.) C ++ wxWidgets-utgåvorna stannar vanligtvis här och bara ABC-utsläpp görs.

  2. Subrelease-nummer, eller wxPython-frisläppande: Den fjärde komponenten i versionnumret (D) används för att representera en subrelease, eller stegvisa utsläpp mellan de officiella wxWidgets-utsläppen. Dessa utgåvor inkluderar korrigeringar för wxWidgets-buggar som wxPython kan ha utsatt, eller mindre förbättringar som är viktiga för wxPython. Detta är inte en godtycklig snapshot av wxWidgets, utan snarare en testad version av koden med korrigeringar och förbättringar som ännu inte finns tillgängliga från wxWidgets förutom från källkodsförvaret.

Källa: https://wiki.wxpython.org/ReleaseSeries



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow