Python

Sådan bruges PyQt GUI Builder

Sådan bruges PyQt GUI Builder

PyQt er et populært Python-bibliotek, der bruges til at implementere grafiske applikationer i Python lettere. Dette bibliotek leveres med et GUI-byggeværktøj (Grafisk brugergrænseflade) kaldet Qt Designer. GUI'en kan bygges hurtigt i Python ved hjælp af træk-og-slip-funktionen i dette bibliotek, selvom dette værktøj ikke har nogen fejlfindingsfunktion som standard IDE. Denne vejledning viser dig, hvordan du implementerer GUI ved hjælp af Qt Designer-klassen PyQt.

Forudsætninger

Du skal installere Qt Designer-værktøjet, før du praktiserer eksemplerne i denne vejledning. Kør følgende kommandoer for at installere Qt Designer på dit system:

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

Åbn Qt Designer

Kør følgende kommando for at ændre den aktuelle biblioteksplacering til Qt Designer folder.

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

Kør følgende kommando for at åbne Qt Designer-applikationen.

$ ./designer

Hvis den Qt Designer er installeret korrekt, vises følgende vindue. Det Widget feltet til venstre i hovedvinduet indeholder forskellige widgets, som du kan bruge til at designe brugergrænsefladen til applikationen. Det Ny form vindue bruges til at oprette et nyt vindue ved hjælp af standardknapperne. Vinduerne vist i højre side af hovedvinduet giver oplysninger om de widgets, der kan læses eller ændres.

Opret den første formular ved hjælp af Qt Designer

For at begynde at designe grænsefladen til Python-applikationen skal vi klikke på skab i det følgende vindue for at åbne dialogboksen med to standardknapper.

Dernæst designer vi en loginformular ved hjælp af Etiket-, tekstredigerings- og trykknap-widgets. Dialogboksen gemmes med navnet Login.ui, som vil blive brugt senere i Python-scriptet. Det QObject navn ændres til Logindialog bruger Ejendomseditorvindue af denne ansøgning.

Brug af dialogboksen Login

Brugergrænsefladefilen oprettet af Qt Designer kan bruges i Python-scriptet på to måder. Filen kan bruges direkte i Python-scriptet eller den konverterede Python-fil af Qt Designer fil kan bruges i Python-scriptet. Begge måder at bruge dialogboksen til Qt Designer vises i det følgende afsnit af vejledningen.

Kør Qt Designer File direkte

UIC-modulet i PyQt-biblioteket bruges til at indlæse filen oprettet af Qt Designer og loadUI () UIC-modulets metode bruges til at indlæse UI-filen. Følgende script viser, hvordan du indlæser Qt Designer fil navngivet Log på.ui som vi skabte før. De nødvendige moduler importeres i begyndelsen af ​​scriptet. Objekt for applikationen oprettes ved hjælp af QApplication (), og Qt Designer filen indlæses ved hjælp af loadUI () metode. Dernæst udføre () metode kaldes for at starte begivenhedsløbet for applikationen.

# Importer sys-modul
importer sys
# Importer QtWidgets og uic-moduler
fra PyQt5 importerer QtWidgets, uic
# Opret app-objekt
app = QtWidgets.QApplication (sys.argv)
# Indlæs GUI-formular og visning
vindue = uic.loadUi ("Login.ui ")
vindue.at vise()
# Start begivenhedsløbet for appen eller dialogboksen
app.udføre ()

Følgende dialogboks vises efter udførelse af ovenstående script.

Kør UI-fil ved at konvertere til Python-fil

UI-filen oprettet af Qt Designer kan konverteres til en Python-fil ved hjælp af pyuic5 kommando. Kør følgende kommando for at konvertere Log på.ui fil i loginForm.py fil. Det Log på.ui filen skal gemmes på den aktuelle placering for at køre følgende kommando; Ellers genereres en fejl.

$ pyuic5 Login.ui -o loginForm.py

Følgende kode genereres i loginForm.py fil efter udførelse af ovenstående kommando.

# - * - kodning: utf-8 - *-
# Formularimplementering genereret ved læsning af ui-fil 'Login.ui '
#
# Oprettet af: PyQt5 UI-kodegenerator 5.12.3
#
# ADVARSEL! Alle ændringer i denne fil går tabt!
fra PyQt5 importerer QtCore, QtGui, QtWidgets
klasse Ui_Logindialog (objekt):
def setupUi (selv, Logindialog):
Logindialog.setObjectName ("Logindialog")
Logindialog.ændre 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.etiket.setGeometry (QtCore.QRect (140, 20, 131, 31))
skrifttype = QtGui.QFont ()
skrifttype.setPointSize (18)
selv.etiket.setFont (skrifttype)
selv.etiket.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.Oversætte
Logindialog.setWindowTitle (_translate ("Logindialog", "Dialog"))
selv.etiket.setText (_translate ("Logindialog", "Login Form"))
selv.label_2.setText (_translate ("Logindialog", "Brugernavn"))
selv.label_3.setText (_translate ("Logindialog", "Password"))
selv.btnLogin.setText (_translate ("Logindialog", "Login"))
selv.btnCancel.setText (_translate ("Logindialog", "Annuller"))

Følgende viser Log på dialogboksen ved at importere loginForm.py fil oprettet ved hjælp af pyuic5 kommando. Objektets anvendelse oprettes ved hjælp af QApplication (), og dialogboksen Login indlæses ved hjælp af setupUi () metode. Login-knappen er knyttet til loginKlikkede () metode til at kontrollere, om brugernavnet og adgangskoden fra brugeren er gyldige. Det Afbestille knappen er fastgjort til CancelClicked () metode til at afslutte fra applikation. Det udføre () metode kaldes for at starte begivenhedsløbet for applikationen.

# Importer QtWidgets
fra PyQt5 importerer QtWidgets
# Importer sys
importer sys
# Importer loginformular ui
import loginForm
# Definer en klasse til opsætning af brugergrænsefladen
klasse MyApp (QtWidgets.QMainWindow, loginForm.Ui_Logindialog):
def __init __ (selv, forælder = Ingen):
super (MyApp, selv).__init __ (forælder)
# Indlæs loginformularen
selv.setupUi (selv)
# Opkald loginClicked () metode
selv.btnLogin.klikkede.forbinde (selv.loginKlikt)
# Opkald CancelClicked () metode
selv.btnCancel.klikkede.forbinde (selv.CancelClicked)
# Erklær metode til at kontrollere brugernavn og adgangskode, når Login-knappen klikker
def loginKlikkede (selv):
hvis selv.textEdit.toPlainText () == 'admin' og selv.textEdit_2.toPlainText () == 'superbruger':
print ('Godkendt bruger')
andet:
print ('Uautentiseret bruger')
# Erklær metode til at afslutte scriptet, når knappen Annuller vil klikke
def cancelClicked (selv):
Afslut()
# Opret app-objekt
app = QtWidgets.QApplication (sys.argv)
# Opret klasseobjekt
form = MyApp ()
# Vis formularen
form.at vise()
# Start begivenhedsløbet for appen eller dialogboksen
app.udføre ()

Følgende dialogboks vises efter udførelse af ovenstående script.


Hvis brugeren indtaster det forkerte brugernavn eller adgangskode i Log på formular, så vises følgende output efter at have klikket på Log på knap.


Hvis brugeren indtaster det korrekte brugernavn og adgangskode i Log på formular, så vises følgende output efter at have klikket på Log på knap.


Hvis brugeren klikker på Afbestille knappen i Log på formular, så forsvinder dialogboksen.

Konklusion

Denne vejledning viste dig, hvordan du installerer Qt Designer og hvordan man designer en simpel form ved hjælp af denne applikation. Vejledningen viste dig også, hvordan du indlæser UI-dialogboksen direkte, og efter at du har konverteret den til Python-scriptet, har den vist i den anden del af denne tutorial. Forhåbentlig hjalp denne artikel dig med bedre at forstå brugen af ​​Qt Designer til opbygning og brug af GUI i applikationer.

Gratis og open source-spilmotorer til udvikling af Linux-spil
Denne artikel dækker en liste over gratis og open source-spilmotorer, der kan bruges til at udvikle 2D- og 3D-spil på Linux. Der er mange sådanne spil...
Shadow of the Tomb Raider til Linux-vejledning
Shadow of the Tomb Raider er den tolvte tilføjelse til Tomb Raider-serien - en action-adventure-spilfranchise oprettet af Eidos Montreal. Spillet blev...
Sådan styrkes FPS i Linux?
FPS står for Billeder i sekundet. FPS's opgave er at måle billedhastigheden i videoafspilninger eller spiloptræden. I enkle ord betegnes antallet af u...