Czy istnieje tutorial specjalnie dla PyQt5? [zamknięte]

Szukam tutoriala PyQt5. Jest to dość skomplikowane, aby rozpocząć rozwój GUI z Pythonem po raz pierwszy bez samouczka.

Do tej pory znalazłem tylko kilka samouczków PyQt4, a ponieważ coś się zmieniło z Qt4 na Qt5, na przykład fakt SIGNAL i SLOT nie są już obsługiwane w Qt5, byłoby miło mieć konkretne samouczki dla PyQt5.

Czy ktoś może podać tutorial Jak rozpocząć tworzenie GUI z PyQt5?

Author: nbro, 2014-01-08

3 answers

W miarę jak moje podróże w głąb PyQt5 będą kontynuowane, będę nadal aktualizować tę odpowiedź o niektóre z bardziej błyszczących skarbów, które znajdę.

Biorąc to pod uwagę, biorę teraz "szorstki szkic" w krótkim wstępie do PyQt5. Podam również linki do przydatnych zasobów. Ja również jestem nowy w tych ramach, i będę rozwijać się na to, co uważam za dobrą strategię korzystania z niego, jak rozgryzę tę strategię. Są prawdopodobnie inne dobre strategie, więc jeśli ktoś ma coś do dodania, w takim razie zostaw komentarz. Jest to bardzo dużo pracy w toku.


Strategia

Wiele się nauczyłem z przykładowego kodu, jak sugerowano w drugiej odpowiedzi, ale coś, z czym przykłady nie pomagają, to głęboka Magia PyQt5. Frameworki z dużą ilością magii (PyQt5, Django, sqlalchemy,...) są świetne, ponieważ ogromna ilość nędzy jest z dala od Ciebie. Z drugiej strony, nie zawsze jest jasne, co się do cholery dzieje, lub co powinieneś zrobić o tym.

Na szczęście mamy opcje:

  • QtDesigner: w tych czasach, gdy twoja klawiatura zapala się, w pakiecie instalacyjnym znajduje się potężny GUI-Builder. Kiedy widzisz kod, który wytwarza (może tylko w wersji community?), zobaczysz, dlaczego to Może nie być panaceum, jak się wydaje.

  • QML : kolejny kandydat do panaceum: deklaratywne budowanie GUI z sformatowanego JSON. Mniam.

  • Qt Quick : framework dla QML. W tym momencie może to wydawać się kusząco łatwe, ale nie daj się wciągnąć przez te rzeczy jeszcze. wydaje się, że zawsze sprowadza się do uczenia się tego ręcznie.

  • Model-View Framework(1): Model-View (nie MVC) oddziela kod, który zajmuje się prezentacją/interakcją, od kodu, który zarządza danymi, w celu zapewnienia modułowości.

Kodowanie w PyQt5 jest znacznie uproszczony dzięki użyciu zestawu klas, które implementują wzorzec projektowy Model-Widok . Model-View jest ewolucją Model-View-Controller (MVC), w której kontroler został ponownie połączony z widokiem. Wydaje się, że są dziwnymi współpracownikami, ale większość logiki programu to radzenie sobie z użytkownikiem lub danymi: wydaje się to mieć pewien sens, przynajmniej na poziomie stratosferycznym.

From A bird ' s oko:

Architektura(S)

Model-Widok-Kontroler

Ten powszechnie stosowany wzorzec projektowy dzieli aplikację na 3 warstwy:

  1. Model ~> Enkapsuje dane. Powiadamia widok i kontroler o wszelkich zmianach danych podstawowych. Powoduje to aktualizacje wyświetlania odpowiednio danych wyjściowych lub dostępnych poleceń.
  2. widok ~> wyświetla odpowiednie wyjście z modelu do użytkownik.
  3. Kontroler ~> zawiera interakcję z użytkownikiem oraz powiadamia model i widok o istotnych zdarzeniach.

Model-Widok

  • Framework widoku graficznego(1) ~> reprezentują wszystko (w tym osadzone Qwidgety itp.) wewnątrz QGraphicsScene jako QGraphicsItem (lub jego pochodną), w tym klasy proxy do osadzania widżetów. Elementy są podobno wysoce zoptymalizowane i integrujące Obsługa OpenGL jest jednoliniowa, co jest miłe.

Ten wzorzec projektowy umieszcza Kontroler wewnątrz widoku. W ten sposób widok jest w stanie obsłużyć całą interakcję użytkownika. Mówiąc konkretnie, są to Sygnały i mechanizmy szczelin.

Zarządzanie Interakcjami Z Użytkownikami

Callbacks

Sygnały i sloty

..... * Przepraszam, ale muszę się podpisać. Wrócę, aby kontynuować dodawanie do tego. **

Praktyczny Przykład (y)

Na przykład, możesz wziąć widok drzewa z przykładu itemviews/editabletreemodel, a następnie zamienić model systemu plików (QFileSystemModel) z przykładu itemviews/dirview i masz pełny (działający) widok drzewa katalogów. Całkiem nieźle.

Więc, weźmiesz kod z przykładu editabletreemodel:

headers = ("Title", "Description")

file = QFile(':/default.txt')
file.open(QIODevice.ReadOnly)
model = TreeModel(headers, file.readAll())
file.close()

self.view.setModel(model)

...i zamiana w modelu z dirview:

model = QFileSystemModel()
model.setRootPath('')
self.view.setModel(model)

...i to po prostu działa. Niesamowite.

Następnym krokiem (w moim przypadku) (*myślę) jest wdrożenie modelu niestandardowego które następnie użyję kilku widoków jednocześnie, ale nie wiem, czy to coś pasuje do twojego przypadku użycia.

Zasoby

Oto kilka klejnotów, które znalazłem podczas moich podróży. Mam nadzieję, że ci pomogą.

To jest samouczek na temat widoku modelu dla Qt5.(1) jest to bardzo szczegółowy dokument z oficjalnych dokumentów Qt5. Wiele przydatnych dokumentów można znaleźć na stronie Qt5. Należy pamiętać, że jest to dla Qt5 (biblioteka C++), ale różnica jest trywialna do przeczytania (i I tak oficjalne dokumenty PyQt5 tam wskazują).

Ten plik PDF zawiera szybki, wysoki poziom frameworku widoku modelu PyQt4. zauważ, że jest to dla PyQt4 (nie PyQt5), ale tak naprawdę jest to dla Pythona (w przeciwieństwie do C++) i odkryłem, że bardzo szybko nauczył mnie wiele.

Dopiero zaczynam bawić się widokiem graficznym i uważam ten tutorial na frameworku widoku graficznego za bardzo pomocny. Jest to ten sam widok, który jest używany w przykładzie qtdemo kod do generowania efektow slick. Zaraz to zaktualizuję.

Oto pełna lista wszystkich modułów Qt5.

To jest pełna lista wszystkich klas Qt5.

Jest to pełna lista wszystkich funkcji w API Qt5.

Jak zauważył katsh w komentarzach innej odpowiedzi, oto link do przykładowego kodu PyQt5.2.1 na GitHub

Dodatkowo pojawia się Kopia przykładowego kodu pakowane wraz z Twoją dystrybucją i można je znaleźć pod adresem:

%PYTHON_HOME%\Lib\site-packages\PyQt5\examples

Jeśli używasz PyDev (Eclipse), możesz uruchomić przykłady, klikając prawym przyciskiem myszy główny plik modułu w Eksploratorze pakietów PyDev lub nawigatorze =: > Run As=: > Python Run

Najlepszym moim (nie tak) skromnym zdaniem jest:

%PYTHON_HOME%\Lib\site-packages\PyQt5\examples\qtdemo\qtdemo.py

Wśród moich obecnych projektów, jestem w trakcie inżynierii odwrotnej ten przykład. Jeśli to sprawdzisz, zobaczysz dlaczego. Ciąg dalszy nastąpi.. ;)

Enjoy!
 64
Author: Inversus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-24 18:58:13

Od jakiegoś czasu szukasz samouczków PyQt5? Nie szukaj dalej! Nie znajdziesz wielu w Internecie.

Nie do końca tutoriale, ale dość oczywiste podstawowe Skrypty pod następującą ścieżką:

/python / lib/site-packages/PyQt5 / examples

Znajdziesz około 100 przykładów w 30 folderach od początkującego do zaawansowanego, obejmujących podstawowe okna, menu, karty, układy, sieć, OpenGL itp.

 26
Author: Pete,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-24 18:45:12

Zobacz http://www.thehackeruniversity.com/2014/01/23/pyqt5-beginner-tutorial/ jest to przyjazny dla początkujących tutorial

 8
Author: user1801060,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-24 07:45:15