PyQt er et populært Python-bibliotek som brukes til å implementere grafiske applikasjoner i Python lettere. Dette biblioteket leveres med et GUI (Graphical User Interface) byggeverktøy som heter Qt Designer. GUI kan bygges raskt i Python ved hjelp av dra-og-slipp-funksjonen i dette biblioteket, selv om dette verktøyet ikke har noe feilsøkingsanlegg som standard IDE. Denne veiledningen viser deg hvordan du implementerer GUI ved hjelp av Qt Designer-klassen PyQt.
Forutsetninger
Du må installere Qt Designer-verktøyet før du trener på eksemplene i denne opplæringen. Kjør følgende kommandoer for å installere Qt Designer på systemet ditt:
$ sudo apt-get install qttools5-dev-tools$ sudo apt-get install qttools5-dev
Åpne Qt Designer
Kjør følgende kommando for å endre den nåværende katalogplasseringen til Qt Designer mappe.
$ cd / usr / lib / x86_64-linux-gnu / qt5 / bin /Kjør følgende kommando for å åpne Qt Designer-applikasjonen.
$ ./designerHvis den Qt Designer er riktig installert, vises følgende vindu. De Widget boksen vist på venstre side av hovedvinduet inneholder forskjellige widgets som du kan bruke til å designe brukergrensesnittet til applikasjonen. De Nytt skjema vindu brukes til å opprette et nytt vindu ved hjelp av standardknappene. Vinduene som vises på høyre side av hovedvinduet gir informasjon om widgetene som kan leses eller endres.
Lag det første skjemaet ved hjelp av Qt Designer
For å begynne å designe grensesnittet for Python-applikasjonen, vil vi klikke på Skape i det følgende vinduet for å åpne dialogboksen med to standardknapper.
Deretter vil vi designe et påloggingsskjema ved hjelp av Etikett, tekstredigering og trykknapp-widgets. Dialogboksen lagres med navnet Login.ui, som vil bli brukt senere i Python-skriptet. De QObject navnet endres til Logindialog bruker Eiendomsredaktørvindu av denne applikasjonen.
Bruke påloggingsdialogboksen
Brukergrensesnittfilen opprettet av Qt Designer kan brukes i Python-skriptet på to måter. Filen kan brukes direkte i Python-skriptet, eller den konverterte Python-filen til Qt Designer filen kan brukes i Python-skriptet. Begge måtene å bruke dialogboksen til Qt Designer vises i den neste delen av opplæringen.
Kjør Qt Designer File direkte
UIC-modulen i PyQt-biblioteket brukes til å laste filen som er opprettet av Qt Designer, og loadUI () UIC-modulen brukes til å laste UI-filen. Følgende skript viser hvordan du laster inn Qt Designer filen heter Logg Inn.ui som vi skapte før. De nødvendige modulene importeres i begynnelsen av skriptet. Objektet til applikasjonen blir opprettet ved hjelp av QApplication (), og Qt Designer filen lastes inn med loadUI () metode. Neste, den utføre () metoden kalles for å starte hendelsessløyfen til applikasjonen.
# Importer sys-modulimporter sys
# Importer QtWidgets og uic-moduler
fra PyQt5 importerer du QtWidgets, uic
# Opprett appobjekt
app = QtWidgets.QApplication (sys.argv)
# Last inn skjermbilde og skjerm
vindu = uic.loadUi ("Logg inn.ui ")
vindu.vise fram()
# Start hendelsessløyfen til appen eller dialogboksen
app.utføre ()
Følgende dialogboks vises etter at du har utført skriptet ovenfor.
Kjør UI-fil ved å konvertere til Python File
UI-filen opprettet av Qt Designer kan konverteres til en Python-fil ved hjelp av pyuic5 kommando. Kjør følgende kommando for å konvertere Logg Inn.ui filen inn i innloggingsskjema.py fil. De Logg Inn.ui filen må lagres på gjeldende plassering for å kjøre følgende kommando; Ellers genereres en feil.
$ pyuic5 Pålogging.ui -o loginForm.pyFølgende kode genereres i innloggingsskjema.py filen etter å ha utført kommandoen ovenfor.
# - * - koding: utf-8 - *-# Skjemaimplementering generert fra å lese ui-filen 'Logg inn.ui '
#
# Opprettet av: PyQt5 UI-kodegenerator 5.12.3
#
# ADVARSEL! Alle endringer som er gjort i denne filen vil gå tapt!
fra PyQt5 importerer du QtCore, QtGui, QtWidgets
klasse Ui_Logindialog (objekt):
def setupUi (selv, Logindialog):
Logindialog.setObjectName ("Logindialog")
Logindialog.endre størrelse (400, 224)
selv-.textEdit = QtWidgets.QTextEdit (Logindialog)
selv-.textEdit.setGeometry (QtCore.QRect (130, 70, 221, 31))
selv-.textEdit.setObjectName ("textEdit")
selv-.textEdit_2 = QtWidgets.QTextEdit (Logindialog)
selv-.textEdit_2.setGeometry (QtCore.QRect (130, 120, 221, 31))
selv-.textEdit_2.setObjectName ("textEdit_2")
selv-.label = QtWidgets.QLabel (Logindialog)
selv-.merkelapp.setGeometry (QtCore.QRect (140, 20, 131, 31))
font = QtGui.QFont ()
font.setPointSize (18)
selv-.merkelapp.setFont (font)
selv-.merkelapp.setObjectName ("label")
selv-.label_2 = QtWidgets.QLabel (Logindialog)
selv-.label_2.setGeometry (QtCore.QRect (36, 70, 81, 20))
selv-.label_2.setObjectName ("label_2")
selv-.label_3 = QtWidgets.QLabel (Logindialog)
selv-.label_3.setGeometry (QtCore.QRect (40, 120, 67, 17))
selv-.label_3.setObjectName ("label_3")
selv-.btnLogin = QtWidgets.QPushButton (Logindialog)
selv-.btnLogin.setGeometry (QtCore.QRect (150, 170, 89, 25))
selv-.btnLogin.setObjectName ("btnLogin")
selv-.btnCancel = QtWidgets.QPushButton (Logindialog)
selv-.btnCancel.setGeometry (QtCore.QRect (250, 170, 89, 25))
selv-.btnCancel.setObjectName ("btnCancel")
selv-.retranslateUi (Logindialog)
QtCore.QMetaObject.connectSlotsByName (Logindialog)
def retranslateUi (selv, Logindialog):
_translate = QtCore.QCoreApplication.oversette
Logindialog.setWindowTitle (_translate ("Logindialog", "Dialog"))
selv-.merkelapp.setText (_translate ("Logindialog", "Login Form"))
selv-.label_2.setText (_translate ("Logindialog", "Brukernavn"))
selv-.label_3.setText (_translate ("Logindialog", "Password"))
selv-.btnLogin.setText (_translate ("Logindialog", "Login"))
selv-.btnCancel.setText (_translate ("Logindialog", "Cancel"))
Følgende vil vise Logg Inn dialogboksen ved å importere innloggingsskjema.py fil opprettet ved hjelp av pyuic5 kommando. Objektet til applikasjonen er opprettet ved hjelp av QApplication (), og påloggingsdialogboksen lastes inn ved hjelp av setupUi () metode. Påloggingsknappen er festet med loginClicked () metode for å sjekke om brukernavnet og passordet hentet fra brukeren er gyldige. De Avbryt knappen er festet til CancelClicked () metode for å avslutte fra søknad. De utføre () metoden kalles for å starte hendelsessløyfen til applikasjonen.
# Importer QtWidgetsfra PyQt5 importerer QtWidgets
# Importer sys
importer sys
# Importer påloggingsskjema ui
import loginForm
# Definer en klasse for å sette opp brukergrensesnittet
klasse MyApp (QtWidgets.QMainWindow, loginForm.Ui_Logindialog):
def __init __ (selv, foreldre = Ingen):
super (MyApp, selv).__init __ (foreldre)
# Last inn påloggingsskjemaet
selv-.setupUi (selv)
# Call loginClicked () -metoden
selv-.btnLogin.klikket.koble (selv.loginClicked)
# Call cancelClicked () -metoden
selv-.btnCancel.klikket.koble (selv.CancelClicked)
# Erklær metoden for å sjekke brukernavn og passord når Login-knappen vil klikke
def loginClicked (selv):
hvis selv.textEdit.toPlainText () == 'admin' og selv.textEdit_2.toPlainText () == 'superbruker':
skriv ut ('Autentisert bruker')
ellers:
skriv ut ('Uautentisert bruker')
# Erklær metoden for å avslutte skriptet når Avbryt-knappen vil klikke
def cancelClicked (selv):
exit()
# Opprett appobjekt
app = QtWidgets.QApplication (sys.argv)
# Opprett klasseobjekt
form = MyApp ()
# Vis skjemaet
skjema.vise fram()
# Start hendelsessløyfen til appen eller dialogboksen
app.utføre ()
Følgende dialogboks vises etter at du har utført skriptet ovenfor.
Hvis brukeren skriver inn feil brukernavn eller passord i Logg Inn skjemaet, vil følgende utdata vises etter å ha klikket på Logg Inn knapp.
Hvis brukeren skriver inn riktig brukernavn og passord i Logg Inn skjemaet, vil følgende utdata vises etter å ha klikket på Logg Inn knapp.
Hvis brukeren klikker på Avbryt -knappen i Logg Inn form, så vil dialogboksen forsvinne.
Konklusjon
Denne veiledningen viste deg hvordan du installerer Qt Designer og hvordan du designer et enkelt skjema ved hjelp av dette programmet. Opplæringen viste deg også hvordan du laster UI-dialogboksen direkte, og etter at du har konvertert den til Python-skriptet, har den vist i den andre delen av denne opplæringen. Forhåpentligvis hjalp denne artikkelen deg til å bedre forstå bruken av Qt Designer for å bygge og bruke GUI i applikasjoner.