在PySide中加载QtDesigner的.ui文件

34 投票
5 回答
34788 浏览
提问于 2025-04-17 00:05

我想找一个简单的例子,教我怎么把用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()

撰写回答