Podstawy pyqt5

Podstawy pyqt5
PYQT5 to moduł Python do tworzenia aplikacji komputerowych GUI. Jest dostępny dla wielu platform, takich jak Windows, Mac, Linux, iOS i Android. Python oferuje kilka modułów, które w rzeczywistości są zdolne do rozwoju GUI, takich jak Tkinter, WXPython, Pyside2 i inni. Jednak PYQT5 wykorzystuje ponad 1000 klas; W rzeczywistości PYQT5 to ogromny moduł! Ponadto PYQT5 obejmuje projektanta QT, graficznego projektanta interfejsu użytkownika, który dodatkowo ułatwia tworzenie GUI. Można go użyć do tworzenia wszystkiego, od odtwarzaczy multimedialnych po przeglądarki internetowe. W tym samouczku poznamy podstaw modułu PYQT5.

Najpierw zainstalujmy PYQT5:

PIP Instaluj PYQT5
PIP Instaluj narzędzia PYQT5

Krok 1: Tworzenie pustego okna

Pierwszym krokiem w tworzeniu czegokolwiek jest konfiguracja pustego okna. Same puste okno wymaga kilku wierszy kodu, więc spójrzmy na to.

z PYQT5 Importuj Qtwidgets
z pyqt5.QtWidgets Import Qapplication, QMainWindow
Import Sys
z PYQT5 Import Qtgui
okno klasy (qtwidgets.QWidget):
def __init __ (ja):
Super().__w tym__()

Ustaw geometrię okna za pomocą metody setgeometry (), która przyjmuje cztery argumenty - początkowa pozycja x, początkowa pozycja y (innymi słowy, gdzie na ekranie pojawia się lewy górny róg), szerokość i wysokość wysokości okno.

samego siebie.Setgeometria (350, 100, 800, 600)

Ustaw tytuł okna za pomocą metody setWindowTitle ().

samego siebie.setWindowTitle („pyqt5”)

Możesz ustawić ikonę za pomocą setWindowiCon (). Zauważ, że ikona musi mieć 64 pikseli na 64 pikseli.

samego siebie.SetWindowiCon (Qtgui.Qicon („grzechotka.png "))

Każdy plik PYQT5 wymaga następnego wiersza, który wymaga SYS.Argv jako argument.

aplikacja = qapplication (sys.Argv)

Następnie utwórz instancję klasy, którą stworzyliśmy powyżej.

win = okno ()
wygrać.pokazywać()

Aby wyjść z okna, naciskając przycisk X, potrzebujemy Sys.wyjście (aplikacja.exec ()).

Sys.wyjście (aplikacja.exec ())

Ten kod utworzy puste okno. Kod jako całość wyglądałby tak:

z PYQT5 Importuj Qtwidgets
z pyqt5.QtWidgets Import Qapplication, QMainWindow
Import Sys
z PYQT5 Import Qtgui
okno klasy (qtwidgets.QWidget):
def __init __ (ja):
Super().__w tym__()
samego siebie.Setgeometria (350, 100, 800, 600)
samego siebie.setWindowTitle („pyqt5”)
samego siebie.SetWindowiCon (Qtgui.Qicon („grzechotka.png "))
aplikacja = qapplication (sys.Argv)
win = okno ()
wygrać.pokazywać()
Sys.wyjście (aplikacja.exec ())

Krok 2: Pasek wejściowy

Następnie utwórzmy pasek wejściowy. Pasek wejściowy to miejsce, w którym użytkownicy mogą dodawać tekst, który możemy odzyskać. Paski wejściowe są tworzone za pomocą QWidgets.QlineEdit (). Oczywiście ustawiamy jego geometrię za pomocą metody setgeometry ().

def initui (self):
samego siebie.input_bar = qtwidgets.QlineEdit (ja)
samego siebie.input_bar.Setgeometria (150, 250, 500, 40)

Uważaj; Nadal musisz aktywować funkcję w metodzie __init__ w następujący sposób:

samego siebie.initui ()

W tym momencie kod w tym momencie wyglądałby tak:

z PYQT5 Importuj Qtwidgets
z pyqt5.QtWidgets Import Qapplication, QMainWindow
Import Sys
z PYQT5 Import Qtgui
okno klasy (qtwidgets.QWidget):
def __init __ (ja):
Super().__w tym__()
samego siebie.Setgeometria (350, 100, 800, 600)
samego siebie.setWindowTitle („pyqt5”)
samego siebie.SetWindowiCon (Qtgui.Qicon („grzechotka.png "))
samego siebie.initui ()
def initui (self):
samego siebie.input_bar = qtwidgets.QlineEdit (ja)
samego siebie.input_bar.Setgeometria (150, 250, 500, 40)
aplikacja = qapplication (sys.Argv)
win = okno ()
wygrać.pokazywać()
Sys.wyjście (aplikacja.exec ())

Krok 3: Tworzenie przycisków

Teraz dodajmy kilka przycisków do pustego płótna. Więc napiszmy kod przycisku. W przypadku przycisku używamy QTWidgets.QPUSHBUTTON (). Jak zwykle możemy ustawić jego geometrię za pomocą metody setgeometrii ().

samego siebie.Button1 = qtwidgets.Qpushbutton („show”, self)
samego siebie.przycisk 1.Setgeometria (275, 350, 200, 50)

Ustaw ikonę za pomocą metody seticon ().

samego siebie.przycisk 1.Seticon (Qtgui.Qicon („grzechotka.png "))

Ustaw styl tekstu za pomocą metody setStylesheet (). Możesz zmienić między innymi kolor, masę czcionki i rozmiar czcionki.

samego siebie.przycisk 1.SetStylesheet („Color: Black”)
samego siebie.przycisk 1.SetStylesheet („Font-Weight: Bold”)
samego siebie.przycisk 1.SetStylesheet („Font-size: 18pt”)

Aby przycisk coś zrobił po kliknięciu, musisz powiedzieć przycisk, że musi on aktywować funkcję po kliknięciu. Odbywa się to za pomocą kliknięcia.connect (), gdzie aktywowana funkcja jest przekazywana jako argument. W moim przypadku to:

samego siebie.przycisk 1.kliknięte.Połącz (ja.Button_clicked)

Następnie definiujemy funkcję, którą należy wywołać lub aktywować po naciśnięciu przycisku. Na razie wydrukujemy to na konsoli.

def Button_clicked (self):
url_value = self.input_bar.tekst()
Drukuj (wartości URL)

Kod jako całość wyglądałby teraz tak:

z PYQT5 Importuj Qtwidgets
z pyqt5.QtWidgets Import Qapplication, QMainWindow
Import Sys
z PYQT5 Import Qtgui
okno klasy (qtwidgets.QWidget):
def __init __ (ja):
Super().__w tym__()
samego siebie.Setgeometria (350, 100, 800, 600)
samego siebie.setWindowTitle („pyqt5”)
samego siebie.SetWindowiCon (Qtgui.Qicon („grzechotka.png "))
samego siebie.initui ()
def initui (self):
samego siebie.input_bar = qtwidgets.QlineEdit (ja)
samego siebie.input_bar.Setgeometria (150, 250, 500, 40)
samego siebie.Button1 = qtwidgets.Qpushbutton („show”, self)
samego siebie.przycisk 1.Setgeometria (275, 350, 200, 50)
samego siebie.przycisk 1.Seticon (Qtgui.Qicon („grzechotka.png "))
samego siebie.przycisk 1.SetStylesheet („Color: Black”)
samego siebie.przycisk 1.SetStylesheet („Font-Weight: Bold”)
samego siebie.przycisk 1.SetStylesheet („Font-size: 18pt”)
samego siebie.przycisk 1.kliknięte.Połącz (ja.Button_clicked)
def Button_clicked (self):
url_value = self.input_bar.tekst()
Drukuj (wartości URL)
aplikacja = qapplication (sys.Argv)
win = okno ()
wygrać.pokazywać()
Sys.wyjście (aplikacja.exec ())

Krok 4: Tworzenie etykiet

Teraz zmodyfikujmy przycisk Naciśnij polecenie za pomocą QLabels. QLabels służą do dodawania tekstu. Dodajemy to do def initui (self).

samego siebie.etykieta = qtwidgets.Qlabel (ja)

Ustawiamy tekst na etykiecie za pomocą metody setText ().

samego siebie.etykieta.setText („Zmień ten tytuł, klikając przycisk”)
samego siebie.etykieta.Setgeometria (QTCORE.QRECT (200, 80, 500, 100))

Ustawiamy czcionkę, rozmiar i wagę za pomocą setStylesheet ().Ustawiamy czcionkę, rozmiar i wagę za pomocą setStylesheet ().

samego siebie.etykieta.SetStylesheet („Font-Weight: Bold”)
samego siebie.etykieta.SetStylesheet („Font-size: 18pt”)

I na koniec aktualizujemy wszystko za pomocą metody aktualizacji ().

samego siebie.etykieta.aktualizacja()

To tworzy następujące czynności:

Teraz możemy zmienić zawartość w funkcji Button_Clicked ().

def Button_clicked (self):

Możemy odzyskać to, co użytkownik pisze na pasku tekstowym za pomocą metody text ().

url_value = self.input_bar.tekst()

Następnie możemy zmienić etykietę po kliknięciu przycisku za pomocą metody setText () i umieścić je we właściwym miejscu za pomocą metody setgeometry ().

samego siebie.etykieta.setText (url_value)
samego siebie.etykieta.Setgeometria (QTCORE.QRECT (200, 80, 500, 100))

Kod jako całość wyglądałby teraz tak:

z PYQT5 Importuj Qtwidgets
z pyqt5.QtWidgets Import Qapplication, QMainWindow
Import Sys
z PYQT5 Import Qtgui, Qtcore
okno klasy (qtwidgets.QWidget):
def __init __ (ja):
Super().__w tym__()
samego siebie.Setgeometria (350, 100, 800, 600)
samego siebie.setWindowTitle („pyqt5”)
samego siebie.SetWindowiCon (Qtgui.Qicon („grzechotka.png "))
samego siebie.initui ()
def initui (self):
samego siebie.input_bar = qtwidgets.QlineEdit (ja)
samego siebie.input_bar.Setgeometria (150, 250, 500, 40)
samego siebie.Button1 = qtwidgets.Qpushbutton („show”, self)
samego siebie.przycisk 1.Setgeometria (275, 350, 200, 50)
samego siebie.przycisk 1.Seticon (Qtgui.Qicon („grzechotka.png "))
samego siebie.przycisk 1.SetStylesheet („Color: Black”)
samego siebie.przycisk 1.SetStylesheet („Font-Weight: Bold”)
samego siebie.przycisk 1.SetStylesheet („Font-size: 18pt”)
samego siebie.przycisk 1.kliknięte.Połącz (ja.Button_clicked)
samego siebie.etykieta = qtwidgets.Qlabel (ja)
samego siebie.etykieta.setText („Zmień ten tytuł, klikając przycisk”)
samego siebie.etykieta.Setgeometria (QTCORE.QRECT (200, 80, 500, 100))
samego siebie.etykieta.SetStylesheet („Font-Weight: Bold”)
samego siebie.etykieta.SetStylesheet („Font-size: 18pt”)
samego siebie.etykieta.aktualizacja()
def Button_clicked (self):
url_value = self.input_bar.tekst()
samego siebie.etykieta.setText (url_value)
samego siebie.etykieta.Setgeometria (QTCORE.QRECT (200, 80, 500, 100))
aplikacja = qapplication (sys.Argv)
win = okno ()
wygrać.pokazywać()
Sys.wyjście (aplikacja.exec ())

Krok 5: Qvboxlayout i Qhboxlayout

I nieT Dodawaj tutaj QVboxLayout lub Qhboxlayout, ale możesz, jeśli chcesz. Qhboxlayout zorganizuje wszystko w poziomym wzorze, a qvboxlayout zorganizuje to pionowo. Jeśli używasz QHBOXLAYOUT lub QVBOXLAYOUT, musisz pominąć metodę setgeometry ().

Jeśli chcesz go dodać, napiszesz następujące w def initui (self). Najpierw zainicjujesz układ za pomocą qvboxlayout ():

samego siebie.projekt = qvboxlayout ()

Następnie dodajesz widżety, które chcesz w nim za pomocą metody addWidget ().

samego siebie.projekt.AddWidget (ja.etykieta)
samego siebie.projekt.AddWidget (ja.input_bar)
samego siebie.projekt.AddWidget (ja.przycisk 1)

Ustawiasz układ za pomocą setLayout (), który przyjmuje zainicjowaną zmienną jako argument.

samego siebie.setlayout (ja.projekt)

Nie potrzebuję tego tutaj, ponieważ ustawiam wszystko z setgeometry (), więc pominę to w moim kodzie. Jeśli jednak chcesz go w swoim kodzie, cały kod wyglądałby tak:

z PYQT5 Importuj Qtwidgets
z pyqt5.Qtwidgets import qapplication, qmainwindow, qhboxlayout, qvboxlayout
Import Sys
z PYQT5 Import Qtgui, Qtcore
okno klasy (qtwidgets.QWidget):
def __init __ (ja):
Super().__w tym__()
#samego siebie.Setgeometria (350, 100, 800, 600)
samego siebie.setWindowTitle („pyqt5”)
samego siebie.SetWindowiCon (Qtgui.Qicon („grzechotka.png "))
samego siebie.initui ()
def initui (self):
samego siebie.input_bar = qtwidgets.QlineEdit (ja)
#samego siebie.input_bar.Setgeometria (150, 250, 500, 40)
samego siebie.Button1 = qtwidgets.Qpushbutton („show”, self)
#samego siebie.przycisk 1.Setgeometria (275, 350, 200, 50)
samego siebie.przycisk 1.Seticon (Qtgui.Qicon („grzechotka.png "))
samego siebie.przycisk 1.SetStylesheet („Color: Black”)
samego siebie.przycisk 1.SetStylesheet („Font-Weight: Bold”)
samego siebie.przycisk 1.SetStylesheet („Font-size: 18pt”)
samego siebie.przycisk 1.kliknięte.Połącz (ja.Button_clicked)
samego siebie.etykieta = qtwidgets.Qlabel (ja)
samego siebie.etykieta.setText („Zmień ten tytuł, klikając przycisk”)
#samego siebie.etykieta.Setgeometria (QTCORE.QRECT (200, 80, 500, 100))
samego siebie.etykieta.SetStylesheet („Font-Weight: Bold”)
samego siebie.etykieta.SetStylesheet („Font-size: 18pt”)
samego siebie.etykieta.aktualizacja()
samego siebie.projekt = qvboxlayout ()
samego siebie.projekt.AddWidget (ja.etykieta)
samego siebie.projekt.AddWidget (ja.input_bar)
samego siebie.projekt.AddWidget (ja.przycisk 1)
samego siebie.setlayout (ja.projekt)
def Button_clicked (self):
url_value = self.input_bar.tekst()
samego siebie.etykieta.setText (url_value)
samego siebie.etykieta.Setgeometria (QTCORE.QRECT (200, 80, 500, 100))
aplikacja = qapplication (sys.Argv)
win = okno ()
wygrać.pokazywać()
Sys.wyjście (aplikacja.exec ())

Krok 6: Projektant QT

Jeszcze lepsze jest z PYQT5 to to, że jest on z własnym projektantem. Projektant to konsola, w której możesz zaprojektować żądany GUI, a program wyrzuci za to kod Python. QT Designer jest dostępny w pakiecie Pyqt5-Tools, więc należy go zainstalować, aby działał. Na projektancie QT możesz umieszczać przyciski, suwaki itp.… Po ich umieszczeniu możesz zapisać plik jako .plik interfejsu użytkownika.

Po zapisaniu pliku jako .plik interfejsu użytkownika, nadal musisz go przekonwertować na .plik PY, aby PyCharm mógł go wyświetlić. Aby to zrobić, otwórz terminal lub CMD i wpisz:

PYUIC5 -x saved_file_name.ui -o Python_file.py

Zapisałem swój plik jako nazwa_file.UI. Terminal wyrzuci plik Pythona i nazywa go tym, co prosiłeś. Następnie możesz otworzyć .plik pycharm i dodaj do niego logikę.

Pamiętaj, że chociaż możemy użyć projektanta do zaprojektowania układu GUI, nadal musimy dodać logikę do kodu, który odbywa się wyłącznie za pomocą kodu Pythona, a nie projektanta. Niestety projektant QT nie dodaje logiki do kodu!

W tym samouczku dowiedzieliśmy się o podstawach PYQT5 i jak korzystać z projektanta QT. Dowiedzieliśmy się, że moglibyśmy tworzyć puste ekrany, dodawać przyciski za pomocą QPUSHBUTTON, dodawać paski wejściowe za pomocą qlineEdit, dodawać tekst za pomocą QLabels i ułożyć wszystko za pomocą QVBoxLayout/Qhboxlayout. W rzeczywistości PYQT5 to bardzo duży moduł używany do tworzenia różnych aplikacji komputerowych GUI. Chociaż istnieje wiele modułów do aplikacji GUI w Python, większość ludzi wybiera PYQT5, ponieważ oferuje ogromny wybór wzorów i projektant, aby ułatwić zadania. Rzeczywiście, PYQT5 to moduł, który warto się uczyć!

Szczęśliwe kodowanie!