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
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_())
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_())
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_())
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