在PySide中加载QtDesigner的.ui文件
我想找一个简单的例子,教我怎么把用QtDesigner生成的.ui文件直接加载到Python应用程序里。
我就是想避免使用pyuic4这个工具。
5 个回答
6
这里有一个变种,使用了更简短的加载指令,来源于 这个链接。(基本上,你可以省去打开和关闭文件的步骤。)
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 的回答。
53
对于刚接触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_())
41
PySide和PyQt不一样,PySide实现了一个叫做 QUiLoader 的类,可以直接读取 .ui 文件。
从链接的文档中,loader = QUiLoader()
file = QFile(":/forms/myform.ui")
file.open(QFile.ReadOnly)
myWidget = loader.load(file, self)
file.close()