2011-08-22 4 views

risposta

33

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() 
+15

Proprio per aiutare i niubbi lungo: QUiLoader è da 'PySide.QtUiTools.QUiLoader' – brews

+0

Tutto quello che ottiene è questo:' QPixmap: deve costruire un QApplication prima di un QPaintDevice Aborted (core dumped) ' – Lucio

+1

@Lucio Il frammento di codice in questa risposta non può essere utilizzato in isolamento. Segui la risposta di BarryPye per un esempio completo. – JBentley

36

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

Grazie mille –

+0

Prova questo @Necronomicron – 101

2

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.
  • Si consiglia di utilizzare if __name__ == "__main__": come indicato nel BarryPye's answer
Problemi correlati