2011-08-22 3 views

Odpowiedz

33

PySide, w przeciwieństwie do PyQt, zaimplementował klasę QUiLoader do bezpośredniego odczytu w plikach .ui. Od połączonego dokumentacji

loader = QUiLoader() 
file = QFile(":/forms/myform.ui") 
file.open(QFile.ReadOnly) 
myWidget = loader.load(file, self) 
file.close() 
+15

Wystarczy pomóc noobs wzdłuż: QUiLoader jest z 'PySide.QtUiTools.QUiLoader' – brews

+0

Wszystko mam to:' QPixmap: Musi zbudować QApplication przed QPaintDevice Przerwane (rdzeń wyrzucony) ' – Lucio

+1

@Lucio Fragment kodu w tej odpowiedzi nie może być używany w izolacji. Postępuj zgodnie z odpowiedzią BarryPye na pełny przykład. – JBentley

36

Dla kompletnych noobs na PySide i plików .ui, tutaj jest pełna przykładów:

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

Bardzo dziękuję –

+0

Spróbuj tego @Necronomicron – 101

2

Inny wariant, oparty na krótszym dyrektywy obciążenia znaleźć na https://askubuntu.com/questions/140740/should-i-use-pyqt-or-pyside-for-a-new-qt-project#comment248297_141641 . (W zasadzie, można uniknąć wszystkich, że otwieranie i zamykanie plików.)

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

Uwagi:

  • filename.ui powinny być w tym samym folderze co plik .py.
  • Możesz użyć if __name__ == "__main__": jak wskazano w BarryPye's answer