Tworzenie GUI w Pythonie: Tkinter vs PyQt [zamknięte]

92

Jeśli ktoś chce opracować interfejs użytkownika w Pythonie, który wybrać: TkInter czy PyQt?

Właśnie zacząłem od TkInter i udało mi się uzyskać kilka prostych interfejsów użytkownika z podstawowymi widżetami, takimi jak etykieta, przycisk, pole tekstowe itp. Ciekawi Cię tylko, jak dobrze PyQt można porównać do TkInter?

Twoje zdrowie

Arnkrishn
źródło
3
Zwróć również uwagę, że oprócz zwykłych TkInter i PyQt dostępnych jest kilka opcji. wxPython jest tym, który od razu przychodzi na myśl, ale bardziej kompletna lista znajduje się na wiki.python.org/moin/GuiProgramming i krótsza lista bardziej popularnych pakietów GUI wymienionych na python.org/doc/faq/gui .
esm,

Odpowiedzi:

78

PyQt, jeśli tworzysz coś poważnego, zwłaszcza, że ​​rzeczy, których się nauczysz, przełożą się bezpośrednio na pracę z Qt również w innych językach, jeśli kiedykolwiek będziesz musiał, a Qt jest prawdopodobnie najlepszym dostępnym obecnie zestawem narzędzi do obsługi interfejsu międzyplatformowego.

Istnieją tylko dwie rzeczywiste (potencjalne) wady:

PyQt jest dostępny tylko na licencji GPL. Oznacza to, że jeśli wydasz swój kod, musi on być dostępny na kompatybilnej licencji, na warunkach wyjątku od GPL firmy Nokia lub na licencji komercyjnej (która kosztuje). W przeciwieństwie do Qt, które jest teraz dostępne na licencji LGPL.

PyQt nie jest domyślnie dołączany do instalacji Pythona. Będziesz musiał sam spakować bibliotekę. (Ars Technica ma dobry artykuł na temat robienia tego dla Windows i OS X.)

Sam DeFabbia-Kane
źródło
5
W przypadku oprogramowania typu open source PyQt przyznaje wyjątek od GPL, który określa listę licencji, z których możesz korzystać. Pełny tekst wyjątku można znaleźć tutaj, a jego kopia jest dołączona do pakietu źródłowego PyQt. riverbankcomputing.co.uk/software/pyqt/license doc.trolltech.com/4.4/license-gpl-exceptions.html
sunqiang
Dobrze, dzięki. Dodałem notatkę.
Sam DeFabbia-Kane,
16
Nokia rozpoczęła tworzenie biblioteki o nazwie PySide, która zapewnia prawie identyczną funkcjonalność jak PyQt, ale na licencji LGPL. Obecnie jest dostępny tylko w systemach opartych na * NIX. Ale możesz po prostu zamienić "PyQt4" na "PySide" w swoim imporcie i mieć (prawie) wszystko działa. pyside.org
James
1
Od 2019 roku PyQt5 jest dostępny, a PySide2 obsługuje większość tych samych powiązań Qt na licencji LGPL.
LightCC
1
czy powinniśmy więc wybrać inny język, jeśli nie chcemy płacić za licencję pyqt, ale chcemy tworzyć wysokiej jakości aplikację?
Kyoko Sasagava
40

PyQt jest teraz naszym głównym zestawem narzędzi GUI i po 1 roku rozwoju nie chcę wracać do niczego innego. Jest stabilny, dojrzały, wieloplatformowy i całkowicie natywny. Nawet okna dialogowe systemu (na przykład do otwierania plików) są używane przez system operacyjny.

Poprawiłem motyw XP, a teraz odpowiednio skórka aplikacji. Tworzy to bardzo profesjonalny wygląd, nieporównywalny z takim zestawem narzędzi Swing. Interfejs API jest obszerny i wykracza poza zwykłe elementy GUI, takie jak widżety. Obsługuje łączność z bazą danych, drukowanie, wątkowanie (używałem go i działa jak urok), ... nawet używam go do generowania plików PDF (żadne inne zewnętrzne biblioteki nie są potrzebne). Poleciłbym książkę Marka Summerfielda, chociażby „ Szybkie programowanie GUI w Pythonie i Qt ”, aby przyspieszyć. Pamiętaj, że Qt jest wyposażony w kreator GUI (projektant Qt), który jest najlepszy, z jakiego korzystałem (i wypróbowałem wiele z nich).
Używam nawet tego kreatora do tworzenia makiet do pokazania użytkownikom (to takie proste!).

Przedstawiłem to 2 innym programistom tutaj i nie słyszałem ich narzekań ...

Wim Verhavert
źródło
10
Ostrzeżenie: Qt wygląda tylko natywnie. Elementy interfejsu użytkownika są faktycznie emulowane (przynajmniej w systemie Mac OS X). "Wrażenie" elementów graficznych jest podobno czasami dziwne z powodu tej emulacji.
Eric O Lebigot
23

Używam tkinterdo małych aplikacji z prostym interfejsem. Bardzo mi się to podoba, nawet jeśli brak dobrego edytora WYSIWYG może być problemem dla większej aplikacji.

W przypadku dużych aplikacji PyQtmoże być lepszym wyborem. Ma bardzo dobrego projektanta ekranu, ale licencja może być problemem.

Wreszcie wxPythonmoże być dobrą alternatywą, ponieważ nie ma tych wad.

luc
źródło
8
Pisałem duże aplikacje komercyjne z tk bez problemu. Całkiem ładnie się skaluje. Nie jest to szczególnie dobre, jeśli Twoje zbiory danych obejmują miliony elementów, ale niewiele osób tworzy takie aplikacje.
Bryan Oakley,
2
Dzięki Bryan za opinię. Ta odpowiedź została udzielona dawno temu i teraz mam lepsze doświadczenie z Tk i coraz bardziej mi się podoba.
luc
zaktualizowałem swój annswer. Więcej narzędzi deweloperskich niż problem ze skalowalnością
luc
8

PyQt jest naprawdę łatwy do nauczenia, a dokumentacja dla Qt działa również dla PyQt, są też porty dla .NET i Java. Jest to więc wróżka między platformami i językami. Masz również PyQt zintegrowany z Eric IDE .

Wsparcie dla stylów CSS jest również naprawdę genialne.

Zobacz nowy instalator OpenSuSE, aby zobaczyć, co możesz z nim zrobić.

przemo_li
źródło
1

Używam PyQt. Jest wieloplatformowy, łatwy w obsłudze i niezawodny.

Użyłem TkInter lekko i nie widzę żadnych punktów, dzięki którym TkInter jest lepszy niż PyQt.

Kaymatrix
źródło