Szukaj…


Uwagi

Co to jest wxPython

Mówiąc najprościej wxPython to zestaw powiązań z biblioteką GUI między platformami wxWidgets C ++.

Ok, co to jest wxWidgets

Biblioteka wxWidgets zapewnia bezpłatny, bezpłatny i otwarty zestaw abstrakcji dla różnych elementów GUI, dzięki czemu natywne formanty są nadal używane, o ile są dostępne, utrzymując natywny wygląd, styl i szybkość. Jako taki stanowi abstrakcję do tworzenia GUI i szeregu innych narzędzi na platformie, która pozwala programistom tworzyć aplikacje dla Windows, Mac OS X, Linux i innych platform przy użyciu jednej bazy kodu. wxWidgets zostało uruchomione w 1992 roku i możesz zobaczyć szczegółową historię tutaj . Biblioteka wxWidgets jest rozpowszechniana na licencji wxWindows, która jest oparta na L-GPL, ale z klauzulą wyjątkową . Klauzula wyjątku pozwala ci łączyć aplikację dynamicznie lub statycznie z wxWidgets bez konieczności dystrybucji źródła dla własnej aplikacji. Innymi słowy, możesz używać wxWidgets do darmowych lub komercyjnych projektów bez żadnych kosztów . Licencja zachęca do udostępniania ulepszeń wprowadzonych do samej biblioteki wxWidgets.

Najważniejsze, zauważ, że wxWidgets zawiera setki klas do tworzenia aplikacji między platformami :

  • Układ okna za pomocą rozmiarów
  • Konteksty urządzenia (wraz z piórami, pędzlami i czcionkami)
  • Kompleksowy system obsługi zdarzeń
  • Przeglądarka pomocy HTML
  • Odtwarzanie dźwięku i wideo
  • Obsługa Unicode i internacjonalizacji
  • Architektura dokumentu / widoku
  • Drukowanie Archiecture
  • Gniazda
  • Wielowątkowość
  • Manipulacja plikami i katalogami
  • Pomoc online i kontekstowa
  • Rendering HTML
  • Podstawowe pojemniki
  • Ładowanie obrazu, zapisywanie, rysowanie i manipulowanie
  • Biblioteka czasu i timerów
  • Obsługa błędów
  • Schowek i przeciągnij i upuść

Zauważ, że niektóre z tych funkcji, np. Wątki, nie są w rzeczywistości powiązane z GUI, ale zapewniają przydatną abstrakcję między platformami, dzięki czemu, na przykład w przypadku wątków, jeden zestaw kodu aplikacji będzie działał na dowolnej obsługiwanej platformie.

Przez wiele lat biblioteka wxWidgets wyprodukowała 4 osobne kompilacje, oprócz debugowania kompilacji z jednego zestawu kodu źródłowego, bibliotek statycznych i dynamicznych zbudowanych zarówno dla ASCII, jak i Unicode. Zwykle jest on dostępny w wersji gotowej w najpopularniejszych wariantach i jako kod źródłowy do budowania z różnymi opcjami dla środowiska docelowego oraz z łańcuchem narzędzi dla programistów C ++ z obsługą wielu łańcuchów narzędzi.

Powiązania Pythona dla tej biblioteki i niektóre dodatki tworzą wxPython.

Powrót do Czym jest wxPython (co mi daje)?

wxPython daje programistom możliwość korzystania z wieloplatformowej biblioteki GUI, z wyraźną licencją, a także daje korzyści z Python. Podobnie jak wxWidgets i Python wxPython jest darmowy, darmowy i open source oraz dostępny do użytku i dystrybucji zarówno w projektach darmowych, jak i komercyjnych bez wynikającego z tego wymogu rozpowszechniania kodu źródłowego .

  • Pełny pakiet GUI, w tym między innymi:
    • Windows (w tym Windows MDI)
    • Czarodzieje
    • Ramki i MiniFrame
    • Dialogi, standardowe, zaawansowane i niestandardowe
    • Książki, drzewa, siatki i kontrolki widoku danych
    • Wskaźniki, suwaki, pokrętła, animacje, schowek, przeciąganie i upuszczanie
    • Obsługa przeglądarek HTML, PDF i obrazów
    • Elementy GUI można pozycjonować absolutnie, ale zdecydowanie zaleca się stosowanie układu opartego na sizer, który obsługuje automatyczne dostosowywanie itp.
  • Wieloplatformowa - obsługa GUI dla Windows, OS-X i Linux z pojedynczą bazą kodu bez instrukcji warunkowych w kodzie
  • Natywna prędkość, wygląd i styl.
  • Szybki prototyp, test i debugowanie - pamiętaj, że jest to python
  • Uruchom i edytuj próbki prawie wszystkiego w pakiecie demo.
  • Wyraźna licencja na bezpłatne korzystanie nawet w produktach komercyjnych.
  • W razie potrzeby interfejs GUI Pythona można przekształcić do interfejsu GUI wxWidgets C ++ później, ponieważ już go używa.
  • Duża, aktywna i pomocna społeczność użytkowników i programistów zarówno na StackOverflow, jak i na listach mailingowych .

Zauważ, że tam gdzie sam Python zapewnia mechanizm wieloplatformowy do implementacji funkcji narzędziowych wxWidgets, przy czym wątek znów jest dobrym przykładem , celowo jest pomijany w wxPython.

wxPython posiada również bardzo duży pakiet demonstracji, które można uruchamiać, testować i edytować z poziomu pakietu Dokumenty i Demo.

Aromaty wxPython

ASCII vs Unicode :

Przez wiele lat, podobnie jak wxWidgets , programiści musieli wybierać między kompilacjami ASCII i Unicode, a także potrzebowali kompilacji dla konkretnej wersji Pythona, a także opcji 32/64 bitowych. Od około wxPython 2.8.9 porzucono jedynie wersję ASCII wxPython, więc obsługa Unicode jest zawsze dostępna.

Classic vs. Phoenix :

Od wersji wxPython 3.0.0 istniała wydana „klasyczna” wersja wxPython i obecnie niepublikowana wersja Phoenix. Klasyczna kompilacja ma tendencję do pozostawania w tyle za kompilacjami wxWidgets o tych samych liczbach, a pakiet dokumentacji to C ++ - jest dostępny do pobrania na różne platformy (patrz Instalacja Classic ), w przypadku Windows jako instalator wykonywalny. Wiązania Phoenix, generowane w dużej mierze automatycznie, powinny dokładniej śledzić kompilacje wxWidgets, a także zawierać dokumentację specyficzną dla wxPython - można ją budować ze źródeł lub kompilacji nocnych, ponieważ koła można uzyskać za pomocą pip , (patrz Instalacja Phoenix ).

W wxPython, ale nie wxWidgets

wxPython rozszerza bibliotekę wxWidgets o szereg funkcji, poniżej znajduje się tylko kilka, które nie są dostępne w wxWidgets:

Zrzuty ekranu pokazowe na Win10

Demo wxPython z zamkniętymi wszystkimi gałęziami: wprowadź opis zdjęcia tutaj Jeden z najnowszych dodatków: wprowadź opis zdjęcia tutaj Jeden z AGW (Advanced Generic Widgets): wprowadź opis zdjęcia tutaj

Instalacja wxPython Phoenix

wxPython Phoenix to najnowsza wersja wxPython (obecnie wrzesień 2016 bez oficjalnej wersji). Obsługuje zarówno Python 2, jak i Python 3. Możesz pobrać kompilację migawek (tj. Koło Python) dla swojej platformy i wersji Python tutaj .

wxPython Phoenix wykorzystuje w dużej mierze zautomatyzowany mechanizm do generowania zarówno powiązań pytona dla biblioteki wxWidgets, jak i dokumentacji. Dokumentacja Phoenix wxPython jest generowana specjalnie dla siebie za pomocą Sphinx . Zwiększa to przejrzystość w przeciwieństwie do dokumentacji C ++ klasycznej wersji, która zawiera wiele przeciążeń, które nie są dostępne w wxPython.

Python i pip muszą zostać zainstalowane, zanim będzie można zainstalować wxPython Phoenix.

Możesz użyć pip do zainstalowania wersji Phoenix wxPython. Oto obecnie zalecana metoda:

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

Gdy użyjesz tego polecenia, pip zainstaluje również wxWidgets . To złożone polecenie pip prawdopodobnie stanie się „pip install wxpython”, kiedy Phoenix zostanie oficjalnie wydany.

Uwaga: wxPython Phoenix jest obecnie w fazie beta i nie ma wszystkich widżetów, które ma wersja Classic.

Instalacja wxPython Classic

wxPython Classic to kompilacja biblioteki wxPython w języku Python 2 . Generowanie powiązań Pythona wymaga dużej liczby ręcznych interwencji, a dokumentacja jest po prostu dokumentacją wxWidgets, która zawiera pewne adnotacje na temat mechanizmów wxPython jako takich, zwykle występuje opóźnienie tygodni lub miesięcy między nową wersją wxWidgets a zgodną wersją wxPython .

Przejdź do strony pobierania w witrynie wxPython, aby sprawdzić, czy istnieje już wersja wxPython, którą można pobrać na swoją platformę.

Najnowsza wersja Classic to 3.0.2.0

Windows

Na stronie znajdują się instalatory dla Python 2.6 i 2.7 dla 32-bitowych i 64-bitowych platform Windows. Wystarczy pobrać jeden z nich i uruchomić go, aby go zainstalować.

Uwaga: Upewnij się, że pobierasz instalator wxPython dla zainstalowanego odpowiedniego Pythona. Na przykład, jeśli masz 32-bitowy Python 2.7, to potrzebujesz 32-bitowego instalatora wxPython

Prochowiec

Jeśli masz OSX 10.5 lub nowszy , będziesz chciał pobrać i zainstalować wersję wxPython Cocoa . Wersja Cocoa obsługuje także 64-bitowe komputery Mac.

Jeśli masz komputer Mac z wersją OSX mniejszą niż 10.5 , będziesz chciał kompilacji Carbon .

Linux

Pierwszą rzeczą jest sprawdzenie, czy menedżer pakietów platformy Linux (np. Yum, apt-get itp.), Czy ma wersję wxPython, którą można zainstalować. Niestety, wiele pakietów Linuksa dla wxPython jest dla wersji 2.8.12.1 zamiast 3.0.2.0. Jeśli Twój menedżer pakietów nie ma najnowszej wersji, prawdopodobnie będziesz musiał go zbudować samodzielnie.

Są to instrukcje budowania 3.0.2.0-Classic tutaj

Witaj świecie

Prosty sposób na utworzenie programu 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()

Wynik:

Wyjście Hello World

Bardziej typowym przykładem jest podklasa 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()

Można to również przepisać, aby użyć super Pythona:

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

Co to jest seria wydawnicza wxPython?

Projekt wxWidgets przyjął model wydania używany w projekcie jądra Linux, w którym istnieją naprzemienne zestawy wydań, w których jeden jest uważany za „stabilny”, a drugi za „programistyczny”. W przypadku wxWidgets „stabilne” i „programistyczne” nie odnoszą się do błędów, ale do stabilności API i kompatybilności wstecznej.

  • Stabilny : na czas trwania serii istniejące interfejsy API nie są modyfikowane, chociaż można dodawać nowe nie-wirtualne metody klas. Kompatybilność binarna bibliotek C ++ jest utrzymywana przez niedopuszczanie jakichkolwiek zmian, które modyfikują rozmiar w pamięci lub układ klas i struktur. To może i często nakłada ograniczenia na to, jakie ulepszenia lub poprawki błędów mogą być wykonywane w serii stabilnych wydań, jednak tak naprawdę wpływa to tylko na warstwę C ++, ponieważ w Pythonie kompatybilność wsteczna ma nieco inne konotacje.

  • Opracowanie : Głównym celem serii rozwojowych wydań jest dodanie nowej funkcjonalności lub rozwiązanie problemów, których nie można naprawić w stabilnej serii z powodu problemów ze zgodnością binarną, a wszystko to w celu stworzenia kolejnej stabilnej serii. Tak więc na czas trwania istniejącej serii programistycznej interfejsy API mogą być modyfikowane lub usuwane w razie potrzeby, chociaż przez większość czasu kompatybilność na poziomie C ++ jest utrzymywana przez przestarzałe przeciążone funkcje lub makra itp. Dla wxPython oznacza to często, że będzie być niezgodnościami na poziomie źródła, ponieważ nie ma przeciążenia ani makr, a aby obsługiwać nową wersję interfejsu API, czasami stara wersja musi zostać usunięta.

Z powodu problemów ze zgodnością binarną najnowsza wersja programistyczna wxWidgets / wxPython może często być mniej wadliwa niż najnowsza wersja ostatniej stabilnej wersji. Istnieje jednak kompromis, że interfejsy API mogą się zmieniać lub ewoluować między wersjami z serii rozwojowej.

Jak działają numery wersji?

W wersjach wxPython używa 4-komponentowego numeru wersji. Chociaż wygląda to bardzo podobnie do używania numerów wersji w innych projektach Open Source, istnieje kilka subtelnych różnic. W przypadku niektórych wersji ABCD można wywnioskować, co następuje:

  1. Seria wydania : Pierwsze dwa składniki numeru wersji ( AB ) reprezentują serię wydania, a jeśli składnik B jest liczbą parzystą, to jest to seria stabilna, jeśli jest liczbą nieparzystą, to jest to seria wydania rozwojowego. Na przykład 2.4, 2.6 i 2.8 są stabilne, a API jest mniej lub bardziej zamrożone w każdej serii, a 2.3, 2.5 i 2.7 są programistyczne, a API i funkcje mogą się zmieniać lub ewoluować w razie potrzeby.

Z tego powodu między kolejnymi stabilnymi seriami mogą występować dość duże zmiany (powiedzmy od 2.4 do 2.6), co często odstrasza ludzi, ponieważ w innych projektach zmiany tego magnitetu spowodowałyby zmianę pierwszego elementu numeru wersji. Zamiast tego powinieneś pomyśleć o kombinacji AB jako o głównej liczbie wersji.

  1. Numer wydania : Trzeci składnik numeru wersji (C) reprezentuje jedno z wydań z serii wydań. Na przykład 2.5.0, 2.5.1, 2.5.2, 2.5.3 ... to wszystkie wydania z serii wydań 2.5. (Ponieważ w tym przypadku jest to seria programistyczna, API i funkcjonalność 2.5.3 ewoluowały tak, aby różniły się miejscami w porównaniu z wersją 2.5.0.) Wersje wxWidgets C ++ zwykle kończą się tutaj i powstają tylko wersje ABC.

  2. Numer podreazy lub wydanie wxPython: Czwarty składnik numeru wersji (D) jest używany do reprezentowania podwykonania lub wydań przyrostowych między oficjalnymi wydaniami wxWidgets. Te wydania zawierają poprawki błędów wxWidgets, które mogły zostać ujawnione przez wxPython, lub drobne ulepszenia, które są ważne dla wxPython. To nie jest arbitralna migawka wxWidgets, ale raczej przetestowana wersja kodu z poprawkami i ulepszeniami, które nie są jeszcze dostępne w wxWidgets poza repozytorium kodu źródłowego.

Źródło: https://wiki.wxpython.org/ReleaseSeries



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow