Sto cercando un semplice esempio di come caricare direttamente un file .ui generato da QtDesigner in un'applicazione Python.Caricamento dei file .ui di QtDesigner in PySide
Mi piacerebbe semplicemente evitare l'uso di pyuic4.
Sto cercando un semplice esempio di come caricare direttamente un file .ui generato da QtDesigner in un'applicazione Python.Caricamento dei file .ui di QtDesigner in PySide
Mi piacerebbe semplicemente evitare l'uso di pyuic4.
PySide, a differenza di PyQt, ha implementato la classe QUiLoader per leggere direttamente nei file .ui. Dalla documentazione collegata,
loader = QUiLoader()
file = QFile(":/forms/myform.ui")
file.open(QFile.ReadOnly)
myWidget = loader.load(file, self)
file.close()
Per i niubbi completi al file .ui PySide e, ecco un esempio completo:
from PySide import QtCore, QtGui, QtUiTools
def loadUiWidget(uifilename, parent=None):
loader = QtUiTools.QUiLoader()
uifile = QtCore.QFile(uifilename)
uifile.open(QtCore.QFile.ReadOnly)
ui = loader.load(uifile, parent)
uifile.close()
return ui
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = loadUiWidget(":/forms/myform.ui")
MainWindow.show()
sys.exit(app.exec_())
Grazie mille –
Prova questo @Necronomicron – 101
Un'altra variante, sulla base di una direttiva di carico più breve, trovato su https://askubuntu.com/questions/140740/should-i-use-pyqt-or-pyside-for-a-new-qt-project#comment248297_141641 . (In sostanza, è possibile evitare tutto quel file di apertura e chiusura.)
import sys
from PySide import QtUiTools
from PySide.QtGui import *
app = QApplication(sys.argv)
window = QtUiTools.QUiLoader().load("filename.ui")
window.show()
sys.exit(app.exec_())
Note:
filename.ui
dovrebbe essere nella stessa cartella del file .py.if __name__ == "__main__":
come indicato nel BarryPye's answer
Proprio per aiutare i niubbi lungo: QUiLoader è da 'PySide.QtUiTools.QUiLoader' – brews
Tutto quello che ottiene è questo:' QPixmap: deve costruire un QApplication prima di un QPaintDevice Aborted (core dumped) ' – Lucio
@Lucio Il frammento di codice in questa risposta non può essere utilizzato in isolamento. Segui la risposta di BarryPye per un esempio completo. – JBentley