Kurs Pythona dla testerów oprogramowania. Część 3. Biblioteka PyQt4.

Kurs Pythona dla testerów oprogramowania. Część 3. Biblioteka PyQt4.
W ostatniej części kursu zainstalowaliśmy Pythona. Jednak, aby zrobić nasz generator potrzebna nam jest również biblioteka PyQt4.

Jest ona Pythonowym API dla przenośnego frameworka interfejsów graficznych Qt4 działającego pod Linuksem, systemami Unixowymi, Mac OS X i MS Windows. PyQt4 dostępne jest na dwóch licencjach w zależności od zastosowań. Dla projektów o otwartym źródle dostępna jest na licencji GPL2, oraz dla projektów komercyjnych na licencji komercyjnej.

 

Wymagania i instalacja

  • SIP, czyli protokół inicjowania sesji
  • Qt 4
  • Python 2.X lub 3.X

W przypadku praktycznie każdej dystrybucji Linuksa, PyQt4 powinien znajdować się w repozytorium - wystarczy zainstalować pakiet (i automatycznie wszystkie jego zależności). W przypadku MS Windows dostępny jest instalator PyQt4, zawierający wszystko co potrzebne poza samym Pythonem.

 

Moduły PyQt4

  • QtCore: zawiera podstawowe klasy odpowiedzialne m.in. za mechanizm slotów i sygnałów, abstrakcję Unikodu, wyrażeń regularnych czy wątków,
  • QtGui: zawiera większość klas GUI,
  • QtWebKit: zawiera silnik renderujący strony internetowe WebKit i widżety/klasy do jego wykorzystania,
  • QtNetwork: zawiera klasy dla serwerów i klientów TCP i UDP. Zawiera implementację klientów FTP, HTTP, wspiera wyszukiwanie DNSów,
  • QtOpenGL: zawiera implementację OpenGL do wyświetlania grafiki 3D,
  • QtSql: zawiera klasy zapewniające obsługę baz danych. Zawiera również implementację SQLite,
  • QtSvg: odpowiada za wyświetlanie zawartości plików SVG,
  • QtXml: moduł zawierający implementację interfejsu SAX i DOM,
  • QtAssistant: moduł zawierający klasy umożliwiające integrowanie Qt Assistant z aplikacją PyQt,
  • Qt: konsoliduje wszystkie podane wyżej moduły. W przypadku ładowania modułu Qt należy pamiętać że spowoduje to załadowanie całego frameworka PyQt4,
  • uic: zawiera klasy odpowiedzialne za parsowanie plików *ui generowanych przez QT Designtera i zawierających informacje o GUI.

 

Sygnały i sloty

Charakterystyczną cechą QT jest  mechanizm sygnałów i slotów będących sposobem porozumiewania się elementów aplikacji.

Sygnał emitowany jest w przypadku wystąpienia określonej akcji (np. przyciśnięto przycisk). Slot to funkcja połączona (za pomocą QtCore.QObject.connect()) z określonym sygnałem i jest wykonywana, gdy taki sygnał zostanie wyemitowany. Warto również dodać, że:

  • sygnał może być połączony z wieloma slotami,
  • sygnał może być połączony z innym sygnałem,
  • slot może być połączony z wieloma sygnałami,
  • w PyQt sygnały są emitowane przez metodę QtCore.Qobject.emit(),
  • połączenia mogą być bezpośrednie - synchroniczne lub kolejkowanie – asynchroniczne,
  • można tworzyć połączenia między wątkami,
  • sygnały są rozłączane za pomocą metody QtCore.QObject.disconnect()

 

Łączenie sygnałów ze slotami

Łączenie sygnałów ze slotami wykonuje się za pomocą metody QtCore.QObject.connect():

  • QtCore.QObject.connect(a, QtCore.SIGNAL("QtSig()"), pyFunction),
  • QtCore.QObject.connect(a, QtCore.SIGNAL("QtSig()"), pyClass.pyMethod),
  • QtCore.QObject.connect(a, QtCore.SIGNAL("QtSig()"), QtCore.SLOT("QtSlot()")),
  • QtCore.QObject.connect(a, QtCore.SIGNAL("PySig()"), QtCore.SLOT("QtSlot()")),
  • QtCore.QObject.connect(a, QtCore.SIGNAL("PySig"), pyFunction)

Rozłączanie działa na takiej samej zasadzie, z tą różnicą, że używa QtCore.Qobject.disconnect(), a sygnały muszą być rozłączane pojedynczo.

 

Emitowanie sygnałów

Każda instancja klas pochodnych względem QtCore.QObject może wyemitować sygnał za pomocą metody emit(). Przyjmuje minimum 1 argument - sygnał. Pozostałe argumenty przekazywane są jako argumenty sygnału:

  • a.emit(QtCore.SIGNAL("clicked()"))
  • a.emit(QtCore.SIGNAL("pySig"), "Hello", "World")

 

Używanie Qt Designera

W związku z tym, że tworzenie interfejsów bywa uciążliwe, można użyć np.: QtDesignera. Jest to środowisko proste i przejrzyste. Dzięki niemu możemy w łatwy i szybki sposób stworzyć wymarzony widget przez zwykłe "wyklinanie".  Aplikacja ta tworzy pliki .ui zawierające kod XML opisujący stworzony interfejs. PyQt4 zawiera Pythonowy moduł uic umożliwiający generowanie kodu Pythona na bazie pliku .ui lub też dynamiczne ładowanie takiego pliku.

Po zainstalowaniu i otwarciu QtDesignera wygląda to następująco:

 

 

Wszelkie potrzebne informacje nt. Qt znajdziecie tutaj: http://doc.qt.io/qt-5/qtdesigner-manual.html. Strona w dosyć przystępny sposób przedstawia możliwości tego kreatora.

 

To tyle odnośnie samej biblioteki. W następnej części zajmiemy już jej praktycznym wykorzystaniem.

 

Bibliografia:

1. http://www.python.rk.edu.pl/w/p/wprowadzenie-do-pyqt4/

 
 
Autor: Iwona Rabus - praktykant w testerzy.pl.
 
 
 
SPRAWDŹ TAKŻE
Kurs Pythona dla testerów oprogramowania. Część 5. Obiektowe aspekty Pythona. 
Kurs Pythona dla testerów oprogramowania. Część 4. Generator danych - analiza aplikacji. 
Kurs Pythona dla testerów oprogramowania. Część 2. Instalacja. 
Kurs Pythona dla testerów oprogramowania. Część 1. Wprowadzenie. 

 

12903

Powiązane szkolenia

05-06
czerwca
2023
Jarosław Hryszko
online
Praktyka testowania
1 750PLN
Testowanie aplikacji internetowych
12
Wolnych miejsc
Rezerwuj
06-07
marca
2023
Arnika Hryszko
online
Praktyka testowania
1 770PLN
Testowanie użyteczności
9
Wolnych miejsc
Rezerwuj
20-21
kwietnia
2023
Rafał Stańczak
online
Dobre praktyki testowania
1 700PLN
Testowanie w metodykach Agile
12
Wolnych miejsc
Rezerwuj
23-24
marca
2023
Krzysztof Kołodziejczyk
online
Praktyka testowania
1 770PLN
Testowanie aplikacji mobilnych - Android
9
Wolnych miejsc
Rezerwuj
12-13
czerwca
2023
Krzysztof Skarbiński
online
Automatyzacja testowania
1 800PLN
Testowanie REST API dla początkujących w języku python
10
Wolnych miejsc
Rezerwuj
27-28
lutego
2023
Krzysztof Kołodziejczyk
online
Języki programowania dla testerów
1 800PLN
JavaScript dla testerów oprogramowania
9
Wolnych miejsc
Rezerwuj
24-26
kwietnia
2023
Krzysztof Kołodziejczyk
online
Praktyka testowania
3 000PLN
Tester gier
11
Wolnych miejsc
Rezerwuj
13
marca
2023
-09
kwietnia
2023
Krzysztof Kołodziejczyk
online
Automatyzacja testowania
5 500PLN
Praktyka automatyzacji testowania
5
Wolnych miejsc
Rezerwuj

To powinno Cię zainteresować