Pytonorm

Hur man använder PyQt GUI Builder

Hur man använder PyQt GUI Builder

PyQt är ett populärt Python-bibliotek som används för att implementera grafiska applikationer i Python lättare. Detta bibliotek levereras med ett GUI-byggverktyg (Graphical User Interface) som heter Qt Designer. GUI kan byggas snabbt i Python med hjälp av dra-och-släpp-funktionen i detta bibliotek, även om det här verktyget inte har någon felsökningsfunktion som standard IDE. Denna handledning visar hur du implementerar GUI med hjälp av Qt Designer-klassen PyQt.

Förutsättningar

Du måste installera Qt Designer-verktyget innan du övar på exemplen i denna handledning. Kör följande kommandon för att installera Qt Designer på ditt system:

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

Öppna Qt Designer

Kör följande kommando för att ändra den aktuella katalogplatsen till Qt Designer mapp.

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

Kör följande kommando för att öppna Qt Designer-applikationen.

$ ./designer

Om den Qt Designer har installerats korrekt kommer följande fönster att visas. De Widget rutan till vänster i huvudfönstret innehåller olika widgets som du kan använda för att utforma applikationsgränssnittet. De Nytt formulär fönster används för att skapa ett nytt fönster med standardknapparna. Fönstren till höger om huvudfönstret ger information om de widgets som kan läsas eller ändras.

Skapa det första formuläret med Qt Designer

För att börja utforma gränssnittet för Python-applikationen klickar vi på Skapa -knappen i följande fönster för att öppna dialogrutan med två standardknappar.

Därefter designar vi ett inloggningsformulär med Etikett-, textredigerings- och tryckknappwidgets. Dialogrutan sparas med namnet Login.ui, som kommer att användas senare i Python-skriptet. De QObject namn kommer att ändras till Logindialog använda Egenskapsredigeringsfönster av denna ansökan.

Använda inloggningsdialogrutan

Användargränssnittsfilen skapad av Qt Designer kan användas i Python-skriptet på två sätt. Filen kan användas direkt i Python-skriptet eller den konverterade Python-filen till Qt Designer filen kan användas i Python-skriptet. Båda sätten att använda dialogrutan för Qt Designer visas i följande avsnitt i handledningen.

Kör Qt Designer File direkt

UIC-modulen i PyQt-biblioteket används för att ladda filen som skapats av Qt Designer och loadUI () metoden för UIC-modulen används för att ladda UI-filen. Följande skript visar hur du laddar Qt Designer fil namngiven Logga in.ui som vi skapade tidigare. De nödvändiga modulerna importeras i början av skriptet. Programmets objekt skapas med hjälp av QApplication (), och den Qt Designer filen laddas med loadUI () metod. Nästa, den exec () metoden kallas för att starta programmets händelsesslinga.

# Importera sys-modul
importera sys
# Importera QtWidgets och uic-moduler
från PyQt5 importerar du QtWidgets, uic
# Skapa app-objekt
app = QtWidgets.QApplication (sys.argv)
# Ladda GUI-formulär och visa
fönster = uic.loadUi ("Logga in.ui ")
fönster.show()
# Starta appens eller dialogrutans evenemangsslinga
app.exec ()

Följande dialogruta visas efter att ovanstående skript har körts.

Kör UI-fil genom att konvertera till Python-fil

UI-filen som skapats av Qt Designer kan konverteras till en Python-fil med pyuic5 kommando. Kör följande kommando för att konvertera Logga in.ui filen till Inloggningsformulär.py fil. De Logga in.ui filen måste lagras på den aktuella platsen för att köra följande kommando; annars genereras ett fel.

$ pyuic5 Logga in.ui -o loginForm.py

Följande kod genereras i Inloggningsformulär.py filen efter att ha utfört ovanstående kommando.

# - * - kodning: utf-8 - *-
# Formimplementering genererad från läsning av ui-fil 'Inloggning.ui '
#
# Skapad av: PyQt5 UI-kodgenerator 5.12.3
#
# VARNING! Alla ändringar som gjorts i den här filen går förlorade!
från PyQt5 importerar QtCore, QtGui, QtWidgets
klass Ui_Logindialog (objekt):
def setupUi (själv, Logindialog):
Logindialog.setObjectName ("Logindialog")
Logindialog.ändra storlek (400, 224)
själv.textEdit = QtWidgets.QTextEdit (Logindialog)
själv.textRedigera.setGeometry (QtCore.QRect (130, 70, 221, 31))
själv.textRedigera.setObjectName ("textEdit")
själv.textEdit_2 = QtWidgets.QTextEdit (Logindialog)
själv.textRedigera_2.setGeometry (QtCore.QRect (130, 120, 221, 31))
själv.textRedigera_2.setObjectName ("textEdit_2")
själv.label = QtWidgets.QLabel (Logindialog)
själv.märka.setGeometry (QtCore.QRect (140, 20, 131, 31))
font = QtGui.QFont ()
font.setPointSize (18)
själv.märka.setFont (typsnitt)
själv.märka.setObjectName ("label")
själv.label_2 = QtWidgets.QLabel (Logindialog)
själv.label_2.setGeometry (QtCore.QRect (36, 70, 81, 20))
själv.label_2.setObjectName ("label_2")
själv.label_3 = QtWidgets.QLabel (Logindialog)
själv.etikett_3.setGeometry (QtCore.QRect (40, 120, 67, 17))
själv.etikett_3.setObjectName ("label_3")
själv.btnLogin = QtWidgets.QPushButton (Logindialog)
själv.btnLogin.setGeometry (QtCore.QRect (150, 170, 89, 25))
själv.btnLogin.setObjectName ("btnLogin")
själv.btnCancel = QtWidgets.QPushButton (Logindialog)
själv.btnCancel.setGeometry (QtCore.QRect (250, 170, 89, 25))
själv.btnCancel.setObjectName ("btnCancel")
själv.retranslateUi (Logindialog)
QtCore.QMetaObject.connectSlotsByName (Logindialog)
def retranslateUi (själv, Logindialog):
_translate = QtCore.QCoreApplication.Översätt
Logindialog.setWindowTitle (_translate ("Logindialog", "Dialog"))
själv.märka.setText (_translate ("Logindialog", "Login Form"))
själv.label_2.setText (_translate ("Logindialog", "Användarnamn"))
själv.etikett_3.setText (_translate ("Logindialog", "Password"))
själv.btnLogin.setText (_translate ("Logindialog", "Login"))
själv.btnCancel.setText (_translate ("Logindialog", "Avbryt"))

Följande visar Logga in dialogrutan genom att importera Inloggningsformulär.py fil skapad med pyuic5 kommando. Programmets objekt skapas med QApplication (), och inloggningsdialogrutan laddas med setupUi () metod. Inloggningsknappen är fäst med loginClicked () metod för att kontrollera om användarnamnet och lösenordet från användaren är giltiga. De Avbryt knappen är fäst vid cancelClicked () metod för att avsluta från ansökan. De exec () metoden kallas för att starta evenemangsslingan för applikationen.

# Importera QtWidgets
från PyQt5 importerar QtWidgets
# Importera sys
importera sys
# Importera inloggningsformulär ui
importera loginForm
# Definiera en klass för att ställa in användargränssnittet
klass MyApp (QtWidgets.QMainWindow, loginForm.Ui_Logindialog):
def __init __ (själv, förälder = Ingen):
super (MyApp, själv).__init __ (förälder)
# Ladda inloggningsformuläret
själv.setupUi (själv)
# Call loginClicked () -metoden
själv.btnLogin.klickade.ansluta (själv.loginClicked)
# Call callClicked () metod
själv.btnCancel.klickade.ansluta (själv.cancelClicked)
# Förklara metod för att kontrollera användarnamn och lösenord när inloggningsknappen klickar
def loginClicked (själv):
om själv.textRedigera.toPlainText () == 'admin' och själv.textRedigera_2.toPlainText () == 'superanvändare':
skriv ut ('Autentiserad användare')
annan:
skriva ut ('Oautentiserad användare')
# Förklara metod för att avsluta skriptet när knappen Avbryt kommer att klicka
def cancelClicked (själv):
utgång()
# Skapa app-objekt
app = QtWidgets.QApplication (sys.argv)
# Skapa klassobjekt
form = MyApp ()
# Visa formuläret
form.show()
# Starta appens eller dialogrutans evenemangsslinga
app.exec ()

Följande dialogruta visas efter att ovanstående skript har körts.


Om användaren anger fel användarnamn eller lösenord i Logga in sedan visas följande utgång efter att du har klickat på Logga in knapp.


Om användaren anger rätt användarnamn och lösenord i Logga in sedan visas följande utgång efter att ha klickat på Logga in knapp.


Om användaren klickar på Avbryt knappen i Logga in formulär försvinner dialogrutan.

Slutsats

Denna handledning visade dig hur du installerar Qt Designer och hur man utformar ett enkelt formulär med den här applikationen. Självstudien visade dig också hur du laddar UI-dialogrutan direkt och efter att du konverterat den till Python-skriptet har visas i den andra delen av den här guiden. Förhoppningsvis har den här artikeln hjälpt dig att bättre förstå användningen av Qt Designer för att bygga och använda GUI i applikationer.

Bästa kommandoradsspel för Linux
Kommandoraden är inte bara din största allierade när du använder Linux, det kan också vara källan till underhållning eftersom du kan använda den för a...
Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...
Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...