meta data for this page
  •  

Różnice

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

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
pyqt [2021/10/14 11:55] – [Instalacja] Paweł Grygorczukpyqt [2021/10/18 11:24] (aktualna) – [Przykładowy skrypt] Paweł Grygorczuk
Linia 12: Linia 12:
 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. 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 ===== ===== Kompilacja =====
  
Linia 20: Linia 25:
 </code> </code>
  
-Python UI Compiler znajduje się w ''C:\Python\Scripts\pyuic6.exe''.+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. Jeżeli chcesz móc przetestować sam projekt interfejsu, dodaj opcję ''-x'' do kompilatora.
  
Linia 38: Linia 52:
  
 <code python> <code python>
-from hello_ui import Ui_Form+import sys 
 +from hello_ui import Ui_Form # Wygenerowany kod
 from PyQt6 import QtWidgets as qtw from PyQt6 import QtWidgets as qtw
 from PyQt6 import QtCore as qtc from PyQt6 import QtCore as qtc
 </code> </code>
  
-Wygenerowny kod ''hello_ui.py'' zawiera klasę ''Ui_Form'', ale klasa ta sama nie stworzy okna. Okno (''Form'') musimy stworzyć osobno i podać dla obiektu klasy ''Ui_Form'' jako argument metody ''setupUi(Form)''. Inaczej mówiąc nasz wygenerowany kod nie tworzy interfejsu od początku, lecz konfiguruje podany interfejs, aby wyglądał tak jak chcemy.+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> <code python>
-class MyWindow(qtw.QWidget): +class MyForm(qtw.QWidget): 
-  def __init__(self, *args, **kwargs): + def __init__(self, *args, **kwargs): 
-    super()+ 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__': if __name__ == '__main__':
-  app = qtw.QApplication(sys.argv) + app = qtw.QApplication(sys.argv) 
-  Form qtw.QWidget() # Tworzmy okno + form MyForm() # Tworzymy okno 
-  ui = Ui_Form() # Tworzymy obiekt UI reprezentujący nasz projekt interfejsu. + form.show() 
-  ui.setupUi(Form# Konfigurujemy okno. + app.exec()
-  Form.show()+
 </code> </code>