[PYTHON] So geben Sie eine .ui-Datei in der Dialog- / Widget-GUI in PySide an

Einführung

Da PySide eine Ableitung von Qt ist, ist ein Tool namens Qt Designer bei der Entwicklung von GUIs hilfreich. Dies ist ein sogenanntes RAD-Tool, mit dem Sie GUIs visuell entwickeln können. Infolgedessen wird eine ".ui-Datei" erstellt, es besteht jedoch die leichte Angewohnheit, sie im PySide-Quellcode (.py-Datei) (anders als in Qt und PyQt) zu verarbeiten. Erstellen Sie daher einen Artikel als Memorandum. Ich werde das machen.

Sie können das in QtCreater integrierte Teil verwenden. Wenn Sie QtDesigner jedoch nur verwenden möchten, befindet es sich im folgenden Verzeichnis. Ich werde auf die Verwendung von QtDesigner verzichten, da es vertrauter ist als das Lernen und es viele detaillierte Erklärungen aus dem Qt-Bereich gibt.

C:\Python\Lib\site-packages\PySide\designer.exe

Stellen Sie die Dialog-GUI mit einer .ui-Datei ein

Die einfachste Form ist wie folgt. Es wird davon ausgegangen, dass eine GUI-Beschreibungsdatei mit dem Namen dialog.ui erstellt wurde. Der Ablauf besteht darin, die .ui-Datei mit QUiLoader zu lesen und mit der Funktion show () anzuzeigen.

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtUiTools import QUiLoader

class Dialog(QDialog):
    
    def __init__(self, parent = None):
        super(Dialog, self).__init__(parent)
        
        #Mit QUiLoader.UI-Datei lesen
        self.dialogUi = QUiLoader().load("./dialog.ui")
        

if __name__ == '__main__':
    #Erstellen Sie eine Qt-Anwendung
    app = QApplication(sys.argv)
    #Formular erstellen und anzeigen
    mainWin = Dialog()
    mainWin.dialogUi.show()
    #Starten Sie die Hauptschleife von Qt
    sys.exit(app.exec_())

Bedienen Sie die in der .ui-Datei beschriebenen GUI-Teile

Geben Sie den bearbeitbaren Objektnamen in der oberen rechten Ecke von QtDesigner an.

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtUiTools import QUiLoader

class Dialog(QDialog):
    
    def __init__(self, parent = None):
        super(Dialog, self).__init__(parent)
        
        self.dialogUi = QUiLoader().load("./dialog.ui")
        
        #Legen Sie den Beschriftungstext fest
        self.dialogUi.label.setLabel("Hello!")
        #Ändern Sie den Beschriftungstext auf Knopfdruck
        self.dialogUi.pushButton.clicked.connect(lambda: self.dialogUi.label.setLabel("World!"))


if __name__ == '__main__':
    #Erstellen Sie eine Qt-Anwendung
    app = QApplication(sys.argv)
    #Formular erstellen und anzeigen
    mainWin = Dialog()
    mainWin.dialogUi.show()
    #Starten Sie die Hauptschleife von Qt
    sys.exit(app.exec_())

Legen Sie die Benutzeroberfläche von Wijed in einer .ui-Datei fest und fügen Sie sie dem Dialogfeld hinzu

Es ist wie folgt.

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtUiTools import QUiLoader

class Dialog(QDialog):
    
    def __init__(self, parent = None):
        super(Dialog, self).__init__(parent)
        
        self.dialogUi = QUiLoader().load("./dialog.ui")

        self.dialogUi.label.setText("Hello!")
        self.dialogUi.pushButton.clicked.connect(lambda: self.dialogUi.label.setText("World!"))

        #Laden Sie die UI-Datei mit QUiLoader
        self.widgetUi = QUiLoader().load("./widget.ui")
        #Fügen Sie dem Hauptlayout des Dialogfelds ein Widget hinzu
        self.dialogUi.verticalLayout.addWidget(self.widgetUi)
        

if __name__ == '__main__':
    #Erstellen Sie eine Qt-Anwendung
    app = QApplication(sys.argv)
    #Formular erstellen und anzeigen
    mainWin = Dialog()
    mainWin.dialogUi.show()
    #Starten Sie die Hauptschleife von Qt
    sys.exit(app.exec_())

Am Ende

Das ist alles für den Umgang mit .ui-Dateien in PySide.

Tatsächlich gibt es ein Problem beim Einstellen der GUI mithilfe der .ui-Datei in PySide. Fügen Sie self.show () in die Funktion \ _ \ _ init \ _ \ _ () ein, oder wenn \ _ \ _ name \ _ \ _ == '\ _ \ _ main \ _ \ _': main loop Wenn Sie "mainWin.show ()" hinzufügen, wird ein sauberes Fenster getrennt von der von QtDesigner erstellten GUI angezeigt. Dies ist die GUI der Dialog-Klasse selbst, die ursprünglich durch Erben der QDialog-Klasse erstellt wurde. Derzeit (PySide 1.2.2) scheint es keine Möglichkeit zu geben, die .ui-Datei hier anzuwenden. Es scheint, dass PySide2 sich mitten in der Entwicklung befindet, um Python3 und Qt5 zu unterstützen. Ich hoffe, dass es auch verbessert wird.

Recommended Posts

So geben Sie eine .ui-Datei in der Dialog- / Widget-GUI in PySide an
So geben Sie eine .py-Datei an, die beim Start in IPython 0.13 geladen werden soll
[LPIC 101] So geben Sie die Festplattenpartitionsnummer in der GRUB-Einstellungsdatei an
So lesen Sie Dateien in verschiedenen Verzeichnissen
So legen Sie das Schema in den Django-Datenbankeinstellungen fest
So schreiben Sie eine GUI mit dem Befehl maya
So zeigen Sie das Änderungsdatum einer Datei in C-Sprache bis zu Nanosekunden an
Verwendung der Methode __call__ in der Python-Klasse
So importieren Sie Dateien in Python an eine beliebige Stelle
So generieren Sie eine Abfrage mit dem IN-Operator in Django
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erstellen Sie eine Konfigurationsdatei
Geben Sie die in S3 Bucket enthaltene Schlüsselliste in eine Datei aus
[sh] Das Speichern der Befehlsausführung führt zu Variablen
So bestimmen Sie die Existenz eines Selenelements in Python
So erhalten Sie alle möglichen Werte in einem regulären Ausdruck
PySide - Machen Sie etwas im Hintergrund, während Sie den modelllosen Dialog anzeigen
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
So geben Sie das Ausgabeergebnis des Linux-Befehls man in eine Datei aus
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
[Anfängernotiz] So legen Sie den Lesepfad der Bibliothek in Python fest
Automatisch in py-Datei konvertieren, wenn die UI-Datei von PySide aktualisiert wird
Wie bekomme ich Stacktrace in Python?
So legen Sie ein nicht geprüftes Ziel in Flake8 fest
So setzen Sie eine Zeilennummer am Anfang einer CSV-Datei
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Sortieren durch Angabe einer Spalte im Python Numpy-Array.
Verschiedene Möglichkeiten, die letzte Zeile einer CSV-Datei in Python zu lesen
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
Verwendung der C-Bibliothek in Python
Lesen einer CSV-Datei mit Python 2/3
So tarnen Sie eine ZIP-Datei als PNG-Datei
Wie man eine Benutzergruppe mit Slack-Benachrichtigung erwähnt, wie man die ID einer Benutzergruppe überprüft
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
So legen Sie Google Text & Tabellen in einem Ordner zusammen in einer TXT-Datei mit Python ab
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
So implementieren Sie eine Verlaufsauswahl in Houdini
So geben Sie die TLS-Version in Python-Anforderungen an
So speichern Sie die Feature-Point-Informationen des Bildes in einer Datei und verwenden sie zum Abgleichen
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook
So benachrichtigen Sie Discord-Kanäle in Python
So erhalten Sie die Dateien im Ordner [Python]
So lesen Sie Seriennummerndateien in einer Schleife, verarbeiten sie und zeichnen sie grafisch auf
Speichern Sie das Objekt in einer Datei mit pickle
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
Vergessen Sie nicht, die Datei zu schließen, nur weil sie sich in einem temporären Ordner befindet
So erstellen Sie eine Rest-API in Django
Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?
So zählen Sie Zahlen in einem bestimmten Bereich
So verbergen Sie Benutzereingaben in der PySimple-Benutzeroberfläche
Dateidialog mit Python-GUI öffnen (tkinter.filedialog)
Wie man eine öffentliche Funktion in Pytest verspottet
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
So legen Sie einen freigegebenen Ordner mit dem Host-Betriebssystem in CentOS7 auf Virtual BOX fest
So listen Sie Dateien im angegebenen Verzeichnis auf (Suche nach mehreren Bedingungen / Unterverzeichnissen)
So testen Sie eine Funktion, die die aktuelle Zeit enthält, mit Freezegun in Python