Estoy buscando un ejemplo simple de cómo cargar directamente un archivo .ui generado por QtDesigner en una aplicación de Python.Cargando los archivos .ui de QtDesigner en PySide
Simplemente me gustaría evitar el uso de pyuic4.
Estoy buscando un ejemplo simple de cómo cargar directamente un archivo .ui generado por QtDesigner en una aplicación de Python.Cargando los archivos .ui de QtDesigner en PySide
Simplemente me gustaría evitar el uso de pyuic4.
PySide, a diferencia de PyQt, ha implementado la clase QUiLoader para leer directamente en archivos .ui. De la documentación vinculada,
loader = QUiLoader()
file = QFile(":/forms/myform.ui")
file.open(QFile.ReadOnly)
myWidget = loader.load(file, self)
file.close()
Para los noobs completos en PySide y archivos .ui, aquí es un ejemplo 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_())
Muchas gracias –
Pruebe esto @Necronomicron – 101
Otra variante, basado en una directiva de carga más corto, que se encuentra en https://askubuntu.com/questions/140740/should-i-use-pyqt-or-pyside-for-a-new-qt-project#comment248297_141641 . (Básicamente, puede evitar todo lo que la apertura y cierre de archivos.)
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_())
Notas:
filename.ui
debe estar en la misma carpeta que el archivo .py.if __name__ == "__main__":
como se indica en BarryPye's answer
Sólo para ayudar a noobs a lo largo de: QUiLoader es de 'PySide.QtUiTools.QUiLoader' – brews
Todo lo que consigo es la siguiente:' QPixmap: Debe construir un QApplication antes de una QPaintDevice Aborted (core dumped) ' – Lucio
@Lucio El fragmento de código en esta respuesta no se puede usar de forma aislada. Sigue la respuesta de BarryPye para un ejemplo completo. – JBentley