2011-08-22 35 views

回答

33

與PyQt不同,PySide已經實現了QUiLoader類來直接讀取.ui文件。 從鏈接的文檔,

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

概述只是爲了幫助菜鳥一起:QUiLoader是'PySide.QtUiTools.QUiLoader' – brews

+0

我得到的是這樣的:'的QPixmap:前必須構造一個QApplication的QPaintDevice中止(核心轉儲)' – Lucio

+1

@Lucio此答案中的代碼片段不能單獨使用。按照BarryPye的答案完成一個例子。 – JBentley

36

對於在PySide和的.ui文件完整的菜鳥,這裏是一個完整的例子:

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

非常感謝你 –

+0

試試這個@Necronomicron – 101

2

另一種變化的基礎上,縮短加載指令,在https://askubuntu.com/questions/140740/should-i-use-pyqt-or-pyside-for-a-new-qt-project#comment248297_141641發現。 (基本上,你能避免所有的文件打開和關閉)。

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

注:

  • filename.ui應該是在同一個文件夾作爲.py文件。
  • 您可能需要使用if __name__ == "__main__":BarryPye's answer
相關問題