Python

Hoe PyQt GUI Builder te gebruiken

Hoe PyQt GUI Builder te gebruiken

PyQt is een populaire Python-bibliotheek die wordt gebruikt om grafische toepassingen in Python gemakkelijker te implementeren. Deze bibliotheek wordt geleverd met een GUI (Graphical User Interface) builder tool genaamd Qt-ontwerper. De GUI kan snel in Python worden gebouwd met behulp van de functie voor slepen en neerzetten van deze bibliotheek, hoewel deze tool geen foutopsporingsfunctie heeft zoals de standaard IDE. Deze tutorial laat zien hoe je de GUI implementeert met behulp van de Qt Designer-klasse van PyQt.

Vereisten

U moet de Qt Designer-tool installeren voordat u de voorbeelden in deze zelfstudie kunt oefenen. Voer de volgende opdrachten uit om de . te installeren Qt-ontwerper op uw systeem:

$ sudo apt-get install qttools5-dev-tools
$ sudo apt-get install qttools5-dev

Open de Qt Designer

Voer de volgende opdracht uit om de huidige maplocatie te wijzigen in de Qt-ontwerper map.

$ cd /usr/lib/x86_64-linux-gnu/qt5/bin/

Voer de volgende opdracht uit om de Qt Designer-toepassing te openen:.

$ ./ontwerper

Als de Qt-ontwerper correct is geïnstalleerd, verschijnt het volgende venster:. De Widget het vak aan de linkerkant van het hoofdvenster bevat verschillende widgets die u kunt gebruiken om de gebruikersinterface van de toepassing te ontwerpen. De Nieuw formulier venster wordt gebruikt om een ​​nieuw venster te maken met behulp van de standaardknoppen. De vensters aan de rechterkant van het hoofdvenster geven informatie over de widgets die kunnen worden gelezen of gewijzigd.

Maak het eerste formulier met behulp van de Qt Designer

Om te beginnen met het ontwerpen van de interface voor de Python-toepassing, klikken we op de Aanmaken knop in het volgende venster om het dialoogvenster met twee standaardknoppen te openen.

Vervolgens zullen we een inlogformulier ontwerpen met behulp van de Label-, tekstbewerkings- en drukknopwidgets. Het dialoogvenster wordt opgeslagen met de naam Aanmelden.ui, die later in het Python-script zal worden gebruikt. De QObject naam wordt veranderd in Inlogdialoog de ... gebruiken Venster Eigenschappenbewerker van deze applicatie.

Het aanmeldingsdialoogvenster gebruiken

Het gebruikersinterfacebestand gemaakt door de Qt-ontwerper kan op twee manieren in het Python-script worden gebruikt. Het bestand kan direct in het Python-script worden gebruikt, of het geconverteerde Python-bestand van de Qt-ontwerper bestand kan worden gebruikt in het Python-script. Beide manieren om het dialoogvenster van . te gebruiken Qt-ontwerper worden weergegeven in het volgende gedeelte van de tutorial.

Voer Qt Designer-bestand direct uit

De UIC-module van de PyQt-bibliotheek wordt gebruikt om het bestand te laden dat is gemaakt door de Qt Designer, en de loadUI() methode van de UIC-module wordt gebruikt om het UI-bestand te laden. Het volgende script laat zien hoe de Qt-ontwerper bestand met de naam Log in.ui die we eerder hebben gemaakt. De benodigde modules worden aan het begin van het script geïmporteerd. Het object van de applicatie wordt gemaakt met behulp van de QToepassing(), en de Qt-ontwerper bestand wordt geladen met de loadUI() methode. Volgende, de exec() methode wordt aangeroepen om de gebeurtenislus van de toepassing te starten.

# Systeemmodule importeren
import systeem
# Importeer QtWidgets en uic-modules
van PyQt5 importeer QtWidgets, uic
# Maak app-object
app = QtWidgets.QToepassing(sys.argv)
# GUI-formulier laden en weergeven
venster = uic.loadUi("Inloggen.ui")
venster.tonen()
# Start de gebeurtenislus van de app of het dialoogvenster
app.exec()

Het volgende dialoogvenster verschijnt na het uitvoeren van het bovenstaande script:.

Voer UI-bestand uit door te converteren naar Python-bestand

Het UI-bestand dat door de Qt Designer is gemaakt, kan worden geconverteerd naar een Python-bestand met behulp van de pyuic5 opdracht. Voer de volgende opdracht uit om de . te converteren Log in.ui bestand in de login formulier.py het dossier. De Log in.ui bestand moet op de huidige locatie worden opgeslagen om de volgende opdracht uit te voeren; anders wordt er een fout gegenereerd.

$ pyuic5 Inloggen.ui -o loginFormulier.py

De volgende code wordt gegenereerd in de login formulier.py bestand na het uitvoeren van de bovenstaande opdracht.

# -*- codering: utf-8 -*-
# Formulierimplementatie gegenereerd door het lezen van het ui-bestand 'Login'.ui'
#
# Gemaakt door: PyQt5 UI-codegenerator 5.12.3
#
# WAARSCHUWING! Alle wijzigingen in dit bestand gaan verloren!
uit PyQt5 importeer QtCore, QtGui, QtWidgets
class Ui_Logindialog(object):
def setupUi(self, Logindialog):
Inlogdialoog.setObjectName("Logindialoogvenster")
Inlogdialoog.formaat wijzigen(400, 224)
zelf.textEdit = QtWidgets.QTextEdit(Logindialoogvenster)
zelf.tekstBewerken.setGeometry(QtCore.QRect(130, 70, 221, 31))
zelf.tekstBewerken.setObjectName("textEdit")
zelf.textEdit_2 = QtWidgets.QTextEdit(Logindialoogvenster)
zelf.textEdit_2.setGeometry(QtCore.QRect(130, 120, 221, 31))
zelf.textEdit_2.setObjectName("textEdit_2")
zelf.label = QtWidgets.QLabel (Logindialoogvenster)
zelf.etiket.setGeometry(QtCore.QRect(140, 20, 131, 31))
lettertype = QtGui.QFont()
lettertype.setPointSize (18)
zelf.etiket.setFont(lettertype)
zelf.etiket.setObjectName("label")
zelf.label_2 = QtWidgets.QLabel (Logindialoogvenster)
zelf.label_2.setGeometry(QtCore.QRect(36, 70, 81, 20))
zelf.label_2.setObjectName("label_2")
zelf.label_3 = QtWidgets.QLabel (Logindialoogvenster)
zelf.label_3.setGeometry(QtCore.QRect(40, 120, 67, 17))
zelf.label_3.setObjectName("label_3")
zelf.btnLogin = QtWidgets.QPushButton (Logindialoogvenster)
zelf.btnLogin.setGeometry(QtCore.QRect(150, 170, 89, 25))
zelf.btnLogin.setObjectName("btnLogin")
zelf.btnCancel = QtWidgets.QPushButton (Logindialoogvenster)
zelf.btnAnnuleren.setGeometry(QtCore.QRect(250, 170, 89, 25))
zelf.btnAnnuleren.setObjectName("btnCancel")
zelf.retranslateUi(Logindialoog)
QtCore.QMetaObject.connectSlotsByName (Logindialoogvenster)
def retranslateUi(self, Logindialog):
_translate = QtCore.QCoreToepassing.vertalen
Inlogdialoog.setWindowTitle(_translate("Logindialoog", "Dialoogvenster"))
zelf.etiket.setText(_translate("Logindialog", "Inlogformulier"))
zelf.label_2.setText(_translate("Logindialoog", "Gebruikersnaam"))
zelf.label_3.setText(_translate("Logindialoog", "Wachtwoord"))
zelf.btnLogin.setText(_translate("Logindialoog", "Login"))
zelf.btnAnnuleren.setText(_translate("Logindialoog", "Annuleren"))

Het volgende zal de . weergeven Log in dialoogvenster door het importeren van de login formulier.py bestand gemaakt met de pyuic5 opdracht. Het object van de applicatie is gemaakt met behulp van QToepassing(), en het Login-dialoogvenster wordt geladen met de setupUi() methode. De Login-knop is bijgevoegd met de inloggenGeklikt() methode om te controleren of de gebruikersnaam en het wachtwoord van de gebruiker geldig zijn. De annuleren knop is bevestigd aan de annuleerklikte() methode om de applicatie te verlaten. De exec() methode wordt aangeroepen om de gebeurtenislus van de toepassing te starten.

# QtWidgets importeren
van PyQt5 importeer QtWidgets
# Systeem importeren
import systeem
# Importeer inlogformulier ui
inlogformulier importeren
# Definieer een klasse om de gebruikersinterface in te stellen
klasse MyApp (QtWidgets.QHoofdvenster, aanmeldingsformulier.Ui_Logindialog):
def __init__(zelf, ouder=Geen):
super(MijnApp, zelf).__init__(ouder)
# Laad het inlogformulier
zelf.setupUi(zelf)
# Roep loginClicked() methode aan
zelf.btnLogin.geklikt.verbinden (zelf).inloggen geklikt)
# Call cancelClicked() methode
zelf.btnAnnuleren.geklikt.verbinden (zelf).annulerenGeklikt)
# Declareer methode om gebruikersnaam en wachtwoord te controleren wanneer de Login-knop zal klikken
def loginGeklikt(zelf):
als zelf.tekstBewerken.toPlainText() == 'admin' en zelf.textEdit_2.toPlainText() == 'supergebruiker':
print('Geverifieerde Gebruiker')
anders:
print('Niet-geverifieerde gebruiker')
# Declareer methode om het script te beëindigen wanneer de knop Annuleren klikt
def cancelClicked(self):
Uitgang()
# Maak app-object
app = QtWidgets.QToepassing(sys.argv)
# Maak klasse-object
formulier = MijnApp()
# Geef het formulier weer
het formulier.tonen()
# Start de gebeurtenislus van de app of het dialoogvenster
app.exec()

Het volgende dialoogvenster verschijnt na het uitvoeren van het bovenstaande script:.


Als de gebruiker de verkeerde gebruikersnaam of het verkeerde wachtwoord invoert in de Log in formulier, dan zal de volgende uitvoer verschijnen na het klikken op de Log in knop.


Als de gebruiker de juiste gebruikersnaam en wachtwoord invoert in de Log in formulier, dan zal de volgende uitvoer verschijnen na het klikken op de Log in knop.


Als de gebruiker op de . klikt annuleren knop in de Log in formulier, dan zal het dialoogvenster verdwijnen.

Conclusie

Deze tutorial liet je zien hoe je moet installeren Qt-ontwerper en hoe u een eenvoudig formulier kunt ontwerpen met deze applicatie. De tutorial liet je ook zien hoe je het UI-dialoogvenster direct kunt laden en nadat je het in het Python-script hebt geconverteerd in het andere deel van deze tutorial. Hopelijk heeft dit artikel u geholpen om het gebruik van Qt Designer voor het bouwen en gebruiken van de GUI in toepassingen beter te begrijpen.

Beste Linux-distributies voor gaming in 2021
Het Linux-besturingssysteem heeft een lange weg afgelegd van zijn oorspronkelijke, eenvoudige, servergebaseerde uiterlijk. Dit besturingssysteem is de...
Hoe u uw gamesessie op Linux kunt vastleggen en streamen
In het verleden werd het spelen van games alleen als een hobby beschouwd, maar met de tijd zag de game-industrie een enorme groei in termen van techno...
Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...