2012-06-15 13 views
11

Mam aplikację, której GUI ma być przerobiony ze względów ergonomicznych. Został napisany w PyGTK i zastanawiam się, czy powinienem przełączyć się na PyQt, aby ułatwić przyszłe zmiany, czy też nie.Jakie są zalety PyQt nad PyGTK i na odwrót?

Ta aplikacja ma w większości klasyczny interfejs użytkownika z przyciskami, paskami narzędzi, oknami dialogowymi itp., Ale ma również pewne szczególne wymagania: na pewno będę musiał utworzyć niestandardowy widget oparty na widoku drzewa/widoku tabeli (aby utworzyć widżet podobny do arkusza kalkulacyjnego) i ta aplikacja ma wiele wątków roboczych, które aktualizują GUI.

Szukam porady na temat tych dwóch punktów:

  • Jeśli chodzi o tworzenie niestandardowych widżety, czy PyQt zapewnienia lepszych mechanizmów niż PyGTK, zwłaszcza nieco zmodyfikować istniejące widżety.
  • miałem problemy z (nawet gdy prawidłowo używając threads_init() i threads_enter()) aktualizację GUI przez wątków roboczych podczas korzystania PyGTK. Czy PyQt jest lepszy w tym punkcie?
+2

Po pierwsze, PyGTK nie jest już aktywnie rozwijany. [PyGObject] (https://live.gnome.org/PyGObject) jest najwyraźniej sposobem na robienie rzeczy teraz. –

+0

Aktualizacja z wątku roboczego działa zawsze z 'gobject.idle_add'. 'threads_init' nie jest obsługiwane w systemie Windows. To może być problem? – schlamar

Odpowiedz

0

Nie mogę porównać, ponieważ nie używam GTK, ale proponuję Qt.

Qt na pewno ma „Drzewo/tableview” mówisz i można uczynić „komórki” niestandardowe widgety (jestem po prostu studiuje ten temat teraz). Qt zostało stworzone z myślą o wątkach, więc wątki robocze mogą z łatwością korzystać z mechanizmu sygnał/slot. I tak, możesz modyfikować istniejące widżety, stosując arkusze stylów lub podklasy.

Teraz o PyQt, ja nie polecam go z powodu problemów licencyjnych. PySide wydaje się być lepszym dla mnie wiązaniem Python: może być używany w aplikacjach komercyjnych swobodnie i ma kilka małych zalet w API (ale poza tym jest w pełni zgodny z PyQt).

Qt jest wieloplatformowym i wdrażanie aplikacji PySide jest bardzo łatwe z cx_Freeze; użytkownicy Twojej aplikacji nie będą musieli niczego instalować.

+2

Przeciwnie, polecam PyQt nad Pyside, ponieważ Pyside jest nowszym projektem i nadal wydaje się nieco bardziej błędny w moim doświadczeniu. Interfejsy API dla tych dwóch bibliotek są prawie identyczne, więc nie powinno to być zbyt wielkim wysiłkiem, aby przełączać się między nimi, jeśli zmienisz zdanie. – Luke

+1

@Luke Zawsze staram się "zaimportować PySide" najpierw i na 'ImportError'' import PyQt4' (nie wiem, jakie będą konsekwencje licencjonowania) i sprawić by moje aplikacje działały z Pythonem 3 i Pythonem 2, wszystkie z jedną bazą kodową. –

+1

Polecam również PyQt nad PySide, jeśli nie potrzebujesz LGPL. PyQt jest znacznie bardziej dojrzałym projektem i ma wysoce konkurencyjnego i aktywnego opiekuna. Stwierdziłem również, że PySide jest znacznie bardziej błędny, chociaż przyznaję, że ostatnio go nie używałem, więc sprawy mogły się zmienić w tym względzie. – ekhumoro

0

ja też mam żadnego doświadczenia z GTK, ale może zaoferować kilka odpowiedzi jednak:

  • Qt jest zaprojektowany od podstaw aby być zorientowanym obiektowo; prawie wszystko w nim ma doskonałe wsparcie dla podklasy. PyQt podobnie.

  • Qt wyraźnie nie obsługuje modyfikację GUI w inny niż główny gwint GUI nici. Prawdopodobnie spowodujesz awarie w ten sposób. Jak wspomina BlaXpirit, istnieje wiele bardzo łatwych mechanizmów komunikacji między wątkami, takich jak przekazywanie sygnałów.

0

Zdecydowanie PyQt ... Jest wiele zaawansowanych aplikacji, które go używają ... Osobiście używam KDE, więc nawet GUI mojego systemu używa Qt! Stworzyłem też aplikację do obsługi arkuszy kalkulacyjnych i stwierdzam, że jest o wiele łatwiej niż to, co myślałem na początku ... Ale BiaXpirit ma również rację: chyba, że ​​tworzysz aplikację open-source, może powinieneś użyć PySide lub czegoś takiego jeszcze ...

0

Ja też nigdy nie używałem PyGTK, ale uważam, że dwie cechy Qt, które są wyjątkowo dobre, to: model/view programowanie i signal/slots. Jeśli potrzebujesz tego rodzaju rzeczy, powiedziałbym, że warto przynajmniej przeczytać dokumenty na ich temat i porównać oba zestawy narzędzi pod tym względem.

Projektant także oszczędza czas. promotion feature --- możesz niestandardowe widżety w projektantu zastępując go wizualnie coś podobnego, np. Masz zaimplementowany niestandardowy widok drzewa ze swoimi funkcjami --- jest po prostu bardzo wygodne. Możesz użyć projektanta, aby wyświetlić zwykły widok drzewa, ale po jego wyeksportowaniu używasz niestandardowej klasy.

Modele docs są doskonałe.

Edytuj: Możesz używać dokumentów Qt bezpośrednio. Programowałem w Pythonie przy użyciu PySide i istnieje tylko kilka przypadków, w których potrzebowałem konkretnej dokumentacji. Chociaż jest to exists.

2

Najbardziej lubię GTK +, ponieważ (przynajmniej dla mnie) wygląda ładniej. PyQt i warianty (na przykład PySide) mają jednak niezmiernie duży zestaw dodatków, w tym silnik WebKit, analizator składni XML, obsługę SQL i wiele innych.

Jeśli chcesz tylko wygląd, powiedziałbym GTK +/PyGObject. Jeśli planujesz użyć czegoś, co ma PyQt, użyj PyQt.

Na marginesie, jeśli trzymasz się GTK +, radzę zaktualizować do PyGObject i GTK + 3.0, ponieważ PyGtk + nie jest już konserwowany.

Powiązane problemy