Die Grundlagen von PYQT5

Die Grundlagen von PYQT5
PYQT5 ist ein Python -Modul für die Entwicklung der GUI -Desktop -Anwendungsentwicklung. Es ist für mehrere Plattformen wie Windows, Mac, Linux, iOS und Android verfügbar. Python bietet mehrere Module an, die in der Tat zur GUI -Entwicklung in der Lage sind, wie Tkinter, WXPython, Pyside2 und mehr. PYQT5 verwendet jedoch mehr als 1000 Klassen; Tatsächlich ist PYQT5 ein riesiges Modul! Darüber hinaus enthält PYQT5 einen QT -Designer, einen grafischen Benutzeroberflächendesigner, der die GUI -Erstellung weiter erleichtert. Es kann verwendet werden, um alles von Mediplayer bis hin zu Webbrowsern zu erstellen. In diesem Tutorial lernen wir die Grundlagen des PYQT5 -Moduls.

Lassen Sie uns zunächst PYQT5 installieren:

PIP Installieren Sie PYQT5
PIP Installieren Sie PYQT5-Tools

Schritt 1: Erstellen des leeren Fensters

Der erste Schritt beim Erstellen von irgendetwas ist das Einrichten des leeren Fensters. Das leere Fenster selbst erfordert ein paar Codezeilen, also schauen wir uns das an.

von pyqt5 import qtwidgets
von pyqt5.Qtwidgets importieren Qapplication, Qmainwindow
Importsystem
von pyqt5 import qtgui
Klassenfenster (Qtwidgets.Qwidget):
def __init __ (selbst):
super().__drin__()

Stellen Sie die Geometrie des Fensters mit der Methode SetGeOmetry () ein, die vier Argumente einnimmt - die anfängliche X -Position, die anfängliche y -Position (mit anderen Worten, in der die obere linke Ecke auf dem Bildschirm angezeigt wird), die Breite und die Höhe der Höhe des Fenster.

selbst.Setgeometrie (350, 100, 800, 600)

Stellen Sie den Titel des Fensters mit der Methode SetWindowtitle () ein.

selbst.setWindowtitle ("pyqt5")

Sie können das Symbol mit SetWindowicon () einstellen. Beachten Sie, dass das Symbol 64 Pixel mal 64 Pixel betragen muss.

selbst.setWindowicon (Qtgui.Qicon ("Rassel.png "))

Jede PYQT5 -Datei erfordert diese nächste Zeile, die SYS benötigt.Argv als Argument.

Anwendung = Qapplication (sys.argv)

Erstellen Sie als nächstes eine Instanz der oben erstellten Klasse, die wir oben erstellt haben.

win = window ()
gewinnen.zeigen()

Um das Fenster zu beenden, indem Sie die X -Taste drücken, benötigen wir SYS.Anwendung verlassen.exec ()).

sys.Anwendung verlassen.exec ())

Dieser Code erstellt ein leeres Fenster. Der Code als Ganzes würde so aussehen:

von pyqt5 import qtwidgets
von pyqt5.Qtwidgets importieren Qapplication, Qmainwindow
Importsystem
von pyqt5 import qtgui
Klassenfenster (Qtwidgets.Qwidget):
def __init __ (selbst):
super().__drin__()
selbst.Setgeometrie (350, 100, 800, 600)
selbst.setWindowtitle ("pyqt5")
selbst.setWindowicon (Qtgui.Qicon ("Rassel.png "))
Anwendung = Qapplication (sys.argv)
win = window ()
gewinnen.zeigen()
sys.Anwendung verlassen.exec ())

Schritt 2: Eingabebalke

Lassen Sie uns als nächstes eine Eingangsleiste erstellen. Eine Eingangsleiste ist ein Ort, an dem Benutzer Text hinzufügen können, den wir abrufen können. Eingabebalken werden mit Qwidgets erstellt.QlineEdit (). Offensichtlich setzen wir seine Geometrie mit der Methode setGeOmetry () fest.

Def Initui (Selbst):
selbst.input_bar = qtwidgets.QlineEdit (Selbst)
selbst.input_bar.Setgeometrie (150, 250, 500, 40)

Wohlgemerkt; Sie müssen die Funktion in der __init__ -Methode wie folgt noch aktivieren:

selbst.initui ()

Der Code in diesem Punkt würde so vollständig so aussehen:

von pyqt5 import qtwidgets
von pyqt5.Qtwidgets importieren Qapplication, Qmainwindow
Importsystem
von pyqt5 import qtgui
Klassenfenster (Qtwidgets.Qwidget):
def __init __ (selbst):
super().__drin__()
selbst.Setgeometrie (350, 100, 800, 600)
selbst.setWindowtitle ("pyqt5")
selbst.setWindowicon (Qtgui.Qicon ("Rassel.png "))
selbst.initui ()
Def Initui (Selbst):
selbst.input_bar = qtwidgets.QlineEdit (Selbst)
selbst.input_bar.Setgeometrie (150, 250, 500, 40)
Anwendung = Qapplication (sys.argv)
win = window ()
gewinnen.zeigen()
sys.Anwendung verlassen.exec ())

Schritt 3: Schaltflächen erstellen

Fügen wir nun der leeren Leinwand einige Tasten hinzu. Schreiben wir also den Code für die Schaltfläche. Für die Taste verwenden wir QTWIDGETS.Qpushbutton (). Wie üblich können wir seine Geometrie mithilfe der Methode SetGeometry () festlegen.

selbst.Button1 = qtwidgets.Qpushbutton ("Show", Selbst)
selbst.Knopf 1.Setgeometrie (275, 350, 200, 50)

Stellen Sie das Symbol mit der Methode setIcon () fest.

selbst.Knopf 1.Seticon (Qtgui.Qicon ("Rassel.png "))

Legen Sie den Stil des Textes mit der Methode setStylesheet () fest. Sie können die Farbe, Schriftgewicht und Schriftgröße unter anderem ändern.

selbst.Knopf 1.setStylesheet ("Farbe: schwarz")
selbst.Knopf 1.setStylesheet ("Schriftgewicht: BOLD")
selbst.Knopf 1.setStylesheet ("Schriftgröße: 18PT")

Um die Schaltfläche zu erhalten, um beim Klicken etwas zu tun, müssen Sie die Schaltfläche mitteilen, dass sie beim Klicken eine Funktion aktivieren muss. Dies geschieht mit Clicked.Connect (), wobei die aktivierte Funktion als Argument übergeben wird. In meinem Fall ist es:

selbst.Knopf 1.geklickt.verbinden (Selbst.Button_clicked)

Als nächstes definieren wir die Funktion, die aufgerufen oder aktiviert werden soll, wenn die Taste gedrückt wird. Im Moment drucken wir es einfach auf der Konsole aus.

Def Button_clicked (Selbst):
url_value = self.input_bar.Text()
print (url_value)

Der Code als Ganzes würde jetzt so aussehen:

von pyqt5 import qtwidgets
von pyqt5.Qtwidgets importieren Qapplication, Qmainwindow
Importsystem
von pyqt5 import qtgui
Klassenfenster (Qtwidgets.Qwidget):
def __init __ (selbst):
super().__drin__()
selbst.Setgeometrie (350, 100, 800, 600)
selbst.setWindowtitle ("pyqt5")
selbst.setWindowicon (Qtgui.Qicon ("Rassel.png "))
selbst.initui ()
Def Initui (Selbst):
selbst.input_bar = qtwidgets.QlineEdit (Selbst)
selbst.input_bar.Setgeometrie (150, 250, 500, 40)
selbst.Button1 = qtwidgets.Qpushbutton ("Show", Selbst)
selbst.Knopf 1.Setgeometrie (275, 350, 200, 50)
selbst.Knopf 1.Seticon (Qtgui.Qicon ("Rassel.png "))
selbst.Knopf 1.setStylesheet ("Farbe: schwarz")
selbst.Knopf 1.setStylesheet ("Schriftgewicht: BOLD")
selbst.Knopf 1.setStylesheet ("Schriftgröße: 18PT")
selbst.Knopf 1.geklickt.verbinden (Selbst.Button_clicked)
Def Button_clicked (Selbst):
url_value = self.input_bar.Text()
print (url_value)
Anwendung = Qapplication (sys.argv)
win = window ()
gewinnen.zeigen()
sys.Anwendung verlassen.exec ())

Schritt 4: Etiketten erstellen

Ändern wir nun den Befehl Taste Drücken Sie mit QLABELs. Qlabels werden verwendet, um Text hinzuzufügen. Wir fügen dies zu Def Initui (Selbst) hinzu.

selbst.label = qtwidgets.Qlabel (Selbst)

Wir setzen den Text mit der Methode setText () auf der Etikett.

selbst.Etikett.setText ("diesen Titel ändern, indem Sie auf die Schaltfläche klicken"))
selbst.Etikett.setGeometry (qtcore.Qrect (200, 80, 500, 100))

Wir setzen die Schriftart, die Größe und das Gewicht mit dem SetStylesheet ().Wir setzen die Schriftart, die Größe und das Gewicht mit dem SetStylesheet ().

selbst.Etikett.setStylesheet ("Schriftgewicht: BOLD")
selbst.Etikett.setStylesheet ("Schriftgröße: 18PT")

Und schließlich aktualisieren wir alles mit der update () -Methode.

selbst.Etikett.aktualisieren()

Dies schafft Folgendes:

Jetzt können wir den Inhalt in der Funktion button_clicked () ändern.

Def Button_clicked (Selbst):

Wir können abrufen, was der Benutzer in der Textleiste mit der methode text () schreibt.

url_value = self.input_bar.Text()

Anschließend können wir die Beschriftung bei der Schaltfläche ändern, indem wir die Methode setText () anklicken und an der rechten Stelle mit der Methode setGeOmetry () platzieren.

selbst.Etikett.setText (url_value)
selbst.Etikett.setGeometry (qtcore.Qrect (200, 80, 500, 100))

Der Code als Ganzes würde jetzt so aussehen:

von pyqt5 import qtwidgets
von pyqt5.Qtwidgets importieren Qapplication, Qmainwindow
Importsystem
von pyqt5 import qtgui, qtcore
Klassenfenster (Qtwidgets.Qwidget):
def __init __ (selbst):
super().__drin__()
selbst.Setgeometrie (350, 100, 800, 600)
selbst.setWindowtitle ("pyqt5")
selbst.setWindowicon (Qtgui.Qicon ("Rassel.png "))
selbst.initui ()
Def Initui (Selbst):
selbst.input_bar = qtwidgets.QlineEdit (Selbst)
selbst.input_bar.Setgeometrie (150, 250, 500, 40)
selbst.Button1 = qtwidgets.Qpushbutton ("Show", Selbst)
selbst.Knopf 1.Setgeometrie (275, 350, 200, 50)
selbst.Knopf 1.Seticon (Qtgui.Qicon ("Rassel.png "))
selbst.Knopf 1.setStylesheet ("Farbe: schwarz")
selbst.Knopf 1.setStylesheet ("Schriftgewicht: BOLD")
selbst.Knopf 1.setStylesheet ("Schriftgröße: 18PT")
selbst.Knopf 1.geklickt.verbinden (Selbst.Button_clicked)
selbst.label = qtwidgets.Qlabel (Selbst)
selbst.Etikett.setText ("diesen Titel ändern, indem Sie auf die Schaltfläche klicken"))
selbst.Etikett.setGeometry (qtcore.Qrect (200, 80, 500, 100))
selbst.Etikett.setStylesheet ("Schriftgewicht: BOLD")
selbst.Etikett.setStylesheet ("Schriftgröße: 18PT")
selbst.Etikett.aktualisieren()
Def Button_clicked (Selbst):
url_value = self.input_bar.Text()
selbst.Etikett.setText (url_value)
selbst.Etikett.setGeometry (qtcore.Qrect (200, 80, 500, 100))
Anwendung = Qapplication (sys.argv)
win = window ()
gewinnen.zeigen()
sys.Anwendung verlassen.exec ())

Schritt 5: QvboxLayout und QHBoxLayout

ICH Es wird keineT Fügen Sie hier einen QVboxLayout oder QHboxLayout hinzu, aber Sie können, wenn Sie möchten. QhboxLayout arrangiert alles in einem horizontalen Muster, und QvboxLayout arrangiert es vertikal. Wenn Sie QHBoxLayout oder QVBoxLayout verwenden, müssen Sie die Methode setGeOmetry () weglassen.

Wenn Sie es hinzufügen wollten, schreiben Sie Folgendes in Def Initui (Selbst). Sie initialisieren das Layout zuerst mit QVBoxLayout ():

selbst.Design = qvboxLayout ()

Sie fügen dann die gewünschten Widgets mit der Methode addWidget () hinzu.

selbst.Design.AddWidget (Selbst.Etikett)
selbst.Design.AddWidget (Selbst.input_bar)
selbst.Design.AddWidget (Selbst.Knopf 1)

Sie setzen das Layout mit setLayout (), das die initialisierte Variable als Argument nimmt.

selbst.setLayout (Selbst.Design)

Ich brauche es hier nicht, weil ich alles mit setGeometry () festgelegt habe, also werde ich es in meinem Code weglassen. Wenn Sie es jedoch in Ihrem Code wollen, würde der gesamte Code so aussehen:

von pyqt5 import qtwidgets
von pyqt5.Qtwidgets importieren Qapplication, QMainWindow, QHBoxLayout, QvboxLayout
Importsystem
von pyqt5 import qtgui, qtcore
Klassenfenster (Qtwidgets.Qwidget):
def __init __ (selbst):
super().__drin__()
#selbst.Setgeometrie (350, 100, 800, 600)
selbst.setWindowtitle ("pyqt5")
selbst.setWindowicon (Qtgui.Qicon ("Rassel.png "))
selbst.initui ()
Def Initui (Selbst):
selbst.input_bar = qtwidgets.QlineEdit (Selbst)
#selbst.input_bar.Setgeometrie (150, 250, 500, 40)
selbst.Button1 = qtwidgets.Qpushbutton ("Show", Selbst)
#selbst.Knopf 1.Setgeometrie (275, 350, 200, 50)
selbst.Knopf 1.Seticon (Qtgui.Qicon ("Rassel.png "))
selbst.Knopf 1.setStylesheet ("Farbe: schwarz")
selbst.Knopf 1.setStylesheet ("Schriftgewicht: BOLD")
selbst.Knopf 1.setStylesheet ("Schriftgröße: 18PT")
selbst.Knopf 1.geklickt.verbinden (Selbst.Button_clicked)
selbst.label = qtwidgets.Qlabel (Selbst)
selbst.Etikett.setText ("diesen Titel ändern, indem Sie auf die Schaltfläche klicken"))
#selbst.Etikett.setGeometry (qtcore.Qrect (200, 80, 500, 100))
selbst.Etikett.setStylesheet ("Schriftgewicht: BOLD")
selbst.Etikett.setStylesheet ("Schriftgröße: 18PT")
selbst.Etikett.aktualisieren()
selbst.Design = qvboxLayout ()
selbst.Design.AddWidget (Selbst.Etikett)
selbst.Design.AddWidget (Selbst.input_bar)
selbst.Design.AddWidget (Selbst.Knopf 1)
selbst.setLayout (Selbst.Design)
Def Button_clicked (Selbst):
url_value = self.input_bar.Text()
selbst.Etikett.setText (url_value)
selbst.Etikett.setGeometry (qtcore.Qrect (200, 80, 500, 100))
Anwendung = Qapplication (sys.argv)
win = window ()
gewinnen.zeigen()
sys.Anwendung verlassen.exec ())

Schritt 6: QT -Designer

Was mit PYQT5 noch besser ist, ist, dass es mit seinem eigenen Designer kommt. Ein Designer ist eine Konsole, bei der Sie die gewünschte GUI entwerfen können, und das Programm wird den Python -Code dafür ausfindeln. Der QT-Designer ist im Pyqt5-Tools-Paket erhältlich, und das muss so installiert werden, dass es funktioniert. Auf dem QT -Designer können Sie Knöpfe, Schieberegler usw. platzieren.… Sobald Sie sie platziert haben, können Sie die Datei als speichern .UI -Datei.

Sobald die Datei als gespeichert ist .UI -Datei müssen Sie sie noch in a konvertieren .PY -Datei, damit Pycharm sie anzeigen kann. Öffnen Sie dazu ein Terminal oder ein CMD und geben Sie ein:

pyuic5 -x saved_file_name.ui -o python_file.py

Ich habe meine Datei als saved_file_name gespeichert.ui. Das Terminal wird eine Python -Datei ausstellen und sie so nennen, wie Sie gefragt haben. Sie können dann die öffnen .PY -Datei in Pycharm und fügen Sie die Logik hinzu.

Bitte denken Sie daran, dass wir den Designer zwar zum Entwerfen des Layouts der GUI verwenden können, wir dem Code jedoch noch Logik hinzufügen müssen, was ausschließlich über Python -Code und nicht über den Designer durchgeführt wird. Leider fügt der QT -Designer dem Code keine Logik hinzu!

In diesem Tutorial haben wir die Grundlagen von PYQT5 und der Verwendung des QT -Designers gelernt. Wir haben gelernt, dass wir leere Bildschirme erstellen, mit Qpushbutton Schaltflächen hinzufügen, Eingabebalken mit QlineEdit hinzufügen, Text mit QLABELs hinzufügen und alles mit QVBoxLayout/QHBoxLayout anordnen. Tatsächlich ist PYQT5 ein sehr großes Modul, das zum Erstellen einer Vielzahl von GUI -Desktop -Anwendungen verwendet wird. Obwohl es in Python viele Module für GUI -Anwendungen gibt, wählen die meisten Menschen PYQT5, da es eine große Auswahl an Designs und einen Designer bietet, um Aufgaben zu ermöglichen. In der Tat ist PYQT5 ein Modul, das es wert ist, gelernt zu werden!

Glückliche Codierung!