Czy istnieje jakaś standardowa platforma do tworzenia aplikacji graficznych w języku Python?

20

Jest tak wiele ram do pisania aplikacji GUI przy użyciu Pythona. Ale czy jest jakiś kluczowy standard? Na przykład mamy pakiet .NET / C # w Visual Studio.

Myślę także w innych perspektywach. Jeśli w przyszłości udzielę wywiadu na temat pracy programisty Python, który interfejs GUI będzie brany pod uwagę?

Zastanawiam się również, nie ma IDE integrującego GUI i język Python. Wybór smaku jest dobry, ale nadmierny wybór staje się rozrywką.

RPK
źródło
Nie. Nie ma „standardu”. .NET nie jest ustandaryzowany. Nie ma organu, który napisałby standard dla .NET. Istnieje standard dla C #: ecma-international.org/publications/standards/Ecma-334.htm . Być może „standardowe” nie jest tym, co masz na myśli?
S.Lott,
@ S.Lott: Przepraszam za ten mylący termin. Miałem na myśli coś innego. W przypadku aplikacji .NET Visual Studio jest najlepszym narzędziem typu all-i-one, które zawiera konstruktor GUI i inne rzeczy. Rzadko ludzie szukają alternatyw VS.NET. Miałem na myśli w podobnym znaczeniu. Dowolne IDE Pythona, w którym kończy się wyszukiwanie kompletnego rozwiązania typu „wszystko w jednym”.
RPK
Czy pytasz o IDE (jak Visual Studio)? Jeśli tak, to „framework” jest niewłaściwym słowem w pytaniu. Wyjaśnij, o co prosisz.
S.Lott,
@ S.Lott: Nie, nie pytam o Visual Studio. Pozwól mi wyjaśnić. Weźmy na przykład ASP.NET. Jest to framework, ale bardzo dobrze integruje się z Visual Studio IDE. Masz wszystkie narzędzia dostępne na środkowym stole. Czy jest coś dla Pythona?
RPK,
Visual Studio to IDE == wszystkie narzędzia do programowania w jednym miejscu. „Nie pytam o Visual Studio” jest dokładnym przeciwieństwem „Masz wszystkie narzędzia dostępne na środkowym stole. Czy jest coś dla Pythona?”. Albo pytasz o IDE (wersja Visual Studio w Pythonie), albo pytasz o samą platformę. A może pytasz o oba. Bardzo trudno jest zrozumieć, o co chodzi w tym pytaniu. Proszę zaktualizować pytanie bardzo wyraźnie, co chcesz.
S.Lott,

Odpowiedzi:

12

Możesz napisać aplikacje GUI Win32 API w Pythonie, jeśli lubisz pisać cały ten wspólny kod: projekt PyWin32

Osobiście lubię wxPython . Jest wieloplatformowy (w pełni obsługiwany zarówno w systemie Linux, jak i Windows) i istnieje już od dłuższego czasu ... przyzwoita baza wsparcia oraz mnóstwo dokumentacji / przykładowego kodu. Jeśli chcesz tego użyć, spójrz na BoaConstructor . To jest IDE dla wxPython (lub lepiej mówiąc, IDE napisane w i dla wxPython). Jest to jedyne RAD IDE specjalnie dla Pythona, na które natknąłem się, o którym nawet warto wspomnieć, z wyjątkiem edytora Qt UI (edytor UI Qt jest dostępny zarówno dla C ++, jak i PyQT).

Jak wspomniał Peter w swojej odpowiedzi, Tk to defaktyczne GUI dla starszych aplikacji Python, ale tak naprawdę nie wyglądają tak ładnie dla użytkownika końcowego. Istnieje kilka rozszerzeń, które sprawiają, że wygląda trochę lepiej i zapewniają możliwość stylizowania interfejsu użytkownika, ale chyba, że ​​utrzymujesz starszą aplikację GUI, nie sugerowałbym zawracania sobie tym głowy.

pyGTK, również wspomniany, byłby kolejnym dobrym wyborem. To także jest wieloplatformowe, chociaż nie miałem żadnego osobistego doświadczenia z programowaniem GTK w systemie Windows. PyQT byłby lepszym wyborem, IMO - myślę, że GUI utworzone przy użyciu biblioteki Qt wyglądają i działają lepiej niż te wykonane przy pomocy GTK. Uważam również, że mechanizm zdarzenia sygnału / gniazda Qt jest łatwiejszy w obsłudze. YMMV.

Naprawdę nie ma żadnego standardu dla rozwoju GUI Pythona, przynajmniej nie to, co widziałem, ale spośród moich innych programistów Pythona, z którymi pracowałem przez lata, zasugerowali mi wxPython i PyQT bardziej niż jakikolwiek inny zestawy narzędzi. Szczerze mówiąc, nie jestem pewien, czy istnieje jakaś znaczna liczba pozycji programistycznych GUI Pythona. Większość rozwoju Pythona, który przeprowadziłem przez lata, była po stronie serwera, ale to nie znaczy, że nie ma różnych firm, które chcą pójść drogą open source dla swoich aplikacji GUI.

Wola
źródło
Aplikacje Tkinter mogą wyglądać całkiem akceptowalnie, często prawie nie do odróżnienia od aplikacji natywnych, jeśli tylko poświęcisz na to czas. Zgodzę się jednak, że wxPython wygląda lepiej bez żadnych poprawek. Osobiście nadal wolę Tkintera, ponieważ dla większości ludzi wygląda wystarczająco dobrze, a moja wydajność jest wyższa niż w przypadku wxPython.
Bryan Oakley,
Tk (Tkinter) nie obsługuje pełnego Unicode (np. Kształtowania skryptów), jeśli planujesz opracować aplikację l10n / i18n.
user.dz
12

Tk był kiedyś standardem, ale jest prawdopodobnie uproszczony i brzydki. Potem Qt stało się dość popularne. Możliwy jest także Gtk, który obejmuje ulubione na platformach Linux.

Ale masz rację, tak naprawdę nie ma oczywistej odpowiedzi. W końcu nadmierny wybór jest dość powszechny.

Peter Eisentraut
źródło
4
Wybrałbym
1
+1 za dobrze zaokrągloną odpowiedź. Qt jest ładny i wydajny, a dostępne są dwa wiązania (licencyjne).
ChristopheD
Prawdopodobnie nie jest już brzydki WYGLĄD w systemie Windows. Jednak nie podoba mi się, jak wygląda kod, który musisz napisać. Kod brzydki. Wygląd, w końcu rodzimy i całkiem rozsądny.
Warren P,
5

Nie ma „standardu” i zgadzam się - mnóstwo wyborów to ból. Jeśli chodzi o zintegrowane IDE „dwukierunkowych narzędzi” dla GUI Pythona, zastanawiam się również, dlaczego wydaje się, że ich nie ma - być może dlatego, że istnieje tak wiele zestawów narzędzi GUI, że nikt nie chce inwestować w IDE tylko dla jednego z nich. im.

Powiedziawszy to, PyQt 4.7 z P3k zapewni Ci wspaniałe GUI (a także wiele innych potężnych funkcji). Zobacz http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/introduction.html - „To jest przewodnik dla PyQt 4.8.4. PyQt v4 to zestaw powiązań Pythona dla v4 Qt framework aplikacji firmy Nokia ”.

PyQt jest szeroko stosowany i jest na nim kilka dobrych książek: patrz http://www.qtrac.eu/pyqtbook.html „Szybkie programowanie GUI za pomocą Pythona i Qt” między innymi (książka jest nieco przestarzała - wymaga aktualizacji dla P3k).

Istnieją 2 poważne problemy z PyQt:

1) Ma pewne wyraźnie „niepythonic” cechy, będąc jedynie cienkim opakowaniem w bibliotekach C ++ Qt. Ale zaleciłem P3k-PyQt 4.7, ponieważ niektóre zostały rozwiązane w „najnowszych i najlepszych” pakietach. Sprawdź ten post:

Problemy projektowe PyQt

2) Do użytku komercyjnego istnieją dość wysokie opłaty licencyjne, zarówno dla PyQt, jak i Qt.

Nadchodzącą alternatywą dla PyQt jest PySide firmy Nokia, kolejne opakowanie Pythona dla Qt, które jest całkowicie open source (ale nie obejmuje licencji Qt).

Wiedza o Qt nie jest złą rzeczą z punktu widzenia rynku, a dostaniesz to od PyQt, więc rozważę to (lub PySide) poważnie, jeśli spróbujesz zdecydować się na jedną platformę GUI, aby stać się ekspertem w .

Niezależnie od tego, co wybierzesz, sugeruję unikanie tkintera w przeważającej części, nawet jeśli jest on „gotowy do użycia” z Pythonem, ponieważ jest bardzo ograniczony, a IMO ma surowy, przestarzały wygląd.

HTH

Wektor
źródło
3

pyGTK jest płodny. Jest dość łatwy w użyciu i sprawia, że ​​GUI, które nie wyglądają w połowie źle.

dan_waterworth
źródło
Jak bogata jest społeczność? Jak szybko odpowiedzi docierają na forum?
RPK
1
@RPK, nie mam pojęcia, nigdy nie musiałem prosić o pomoc, wszystko jest dość łatwe w użyciu.
dan_waterworth
Nie jestem pewien, czy „płodny” jest właściwym słowem. „obficie produkujące potomstwo, młode, owocowe itp., bardzo owocne: płodna grusza” Może „popularna” lub „wspaniała”.
S.Lott,
@ S.Lott, płodny: „Podobnie daje wyniki lub działa w obfitości”. (druga definicja Wikisłownika). „Służyć do produkcji; owocny z rezultatów; aktywny; jako płodny mózg; kontrowersja płodna zła”. (Webster's Revised Unabridged Dictionary (1913 + 1828))
dan_waterworth
płodny jak w „pyGTK produkuje wiele aplikacji?” Wydaje się napięty. Ludzie produkują aplikacje. pyGTK jest być może popularną fundacją, ale nie wygląda na producenta.
S.Lott,
0

Gtk3 to bardzo dojrzały interfejs GUI. Ma natywne powiązania w języku Python (GObject Introspection) i mnóstwo dokumentacji . Jeśli robisz sporo GUI, rozważ użycie Anjuty . Anjuta ma interfejs przeciągnij i upuść, aby łatwo skonfigurować widżety.

WxWidgets jest całkiem niezły, jednak nie ma łatwego sposobu na dynamiczne generowanie wywołań Pythona, tak jak Anjuta dla Gtk.

PyGtk jest teraz przestarzałe na rzecz powiązań Gtk3 z Python (GObject Introspection)

PyQt jest także odtwarzaczem w graficznym interfejsie Pythona, ale nie ma dużej społeczności.

BoaConstructor jest dłużej utrzymywany i głupio byłoby go używać.

theGtknerd
źródło