meta data for this page
  •  

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
pyqt [2021/10/14 10:40] – utworzono Paweł Grygorczukpyqt [2021/10/18 11:24] (aktualna) – [Przykładowy skrypt] Paweł Grygorczuk
Linia 10: Linia 10:
 </code> </code>
  
-W katalogu ''Scripts'' Pythona, np. w Windows: ''C:\Python\Scripts''+W katalogu Pythona, przykładowo w Windows ''C:\Python\Lib\site-packages\qt6_applications\Qt\bin'' znajduje się aplikacja ''designer.exe'', za pomocą której możemy projektować interfejs graficzny. Najlepiej zrobić sobie do niej skrót. 
 + 
 +Sprawdzenie zainstalowanych bibliotek: 
 + 
 +<code bash> 
 +pip list 
 +</code> 
 +===== Kompilacja ===== 
 + 
 +Gotowy projekt zapisany zostaje jako plik z rozszerzeniem ''.ui'', np. ''hello.ui''. Jest to plik [[XML]], który można następnie przekształcić kod Pythona i wykorzystać w naszym skrypcie. Plik ''.ui'' kompilujemy, za pomocą Python UI Compiler, następująco: 
 + 
 +<code bash> 
 +pyuic6 -o hello.py hello.ui 
 +</code> 
 + 
 +Python UI Compiler znajduje się w ''C:\Python\Lib\site-packages\PyQt6\pyuic.py''. 
 + 
 +<WRAP center round tip 90%> 
 +Zdarza się, że polecenie ''pyuic6'' nie działa bezpośrednio w konsoli. Wówczas uruchom program z poziomu Pythona, np. (wypisanie wersji): 
 +<code bash> 
 +python -m PyQt6.uic.pyuic -V 
 +</code> 
 +</WRAP> 
 + 
 + 
 +Jeżeli chcesz móc przetestować sam projekt interfejsu, dodaj opcję ''-x'' do kompilatora. 
 + 
 +<code bash> 
 +pyuic6 -x -o hello_ui.py hello.ui 
 +</code> 
 + 
 +Teraz będzie możliwe uruchomienie. 
 + 
 +<code bash> 
 +python hello_ui.py 
 +</code> 
 + 
 +===== Przykładowy skrypt ===== 
 + 
 +Tworzymy nowy plik, np. ''hello.py''
 + 
 +<code python> 
 +import sys 
 +from hello_ui import Ui_Form # Wygenerowany kod 
 +from PyQt6 import QtWidgets as qtw 
 +from PyQt6 import QtCore as qtc 
 +</code> 
 + 
 +Wygenerowny kod ''hello_ui.py'' zawiera klasę ''Ui_Form'', ale klasa ta sama nie stworzy okna. Aby stworzyć okno, musimy zainicjować osobno ''QWidget'' i podać go dla obiektu klasy ''Ui_Form'' jako argument metody ''setupUi()''. Inaczej mówiąc nasz wygenerowany kod nie tworzy interfejsu od początku, lecz konfiguruje podany widget, aby wyglądał tak jak chcemy. 
 + 
 +W tym celu możemy stworzyć własną klasę, która dziedziczy po ''QWidget'', dzięki czemu dla ''ui.setupUi()'' będzie można podać ''self''
 + 
 +<code python> 
 +class MyForm(qtw.QWidget): 
 + def __init__(self, *args, **kwargs): 
 + super().__init__(*args, **kwargs) 
 +  
 + self.ui = Ui_Form() # Tworzymy obiekt UI reprezentujący nasz projekt interfejsu. 
 + self.ui.setupUi(self) # Konfigurujemy widget. 
 +  
 + self.ui.pushButton.clicked.connect(self.do_sth) 
 +  
 + def do_sth(self): 
 + pass 
 + 
 +if __name__ == '__main__': 
 + app = qtw.QApplication(sys.argv) 
 + form = MyForm() # Tworzymy okno 
 + form.show() 
 + app.exec() 
 +</code> 
 +