如何使用PySide将.ui文件加载到python类中?

时间:2013-02-15 10:29:12

标签: python qt user-interface pyqt pyside

我已经使用了PyQt很长一段时间,而且在我使用它的整个过程中,有一个非常一致的编程模式。

  1. 使用Qt Designer创建.ui文件。
  2. 创建一个与您在.ui文件中创建的小部件类型相同的python类。
  3. 初始化python类时,使用uic将.ui文件动态加载到类中。
  4. 有没有办法在PySide中做类似的事情?我已经阅读了文档和示例,我能找到的最接近的东西是一个计算器示例,它将.ui文件预渲染为python代码,这是在PyQt中执行它的超级老方法(为什么要将它烘焙到python什么时候你可以解析ui?)

1 个答案:

答案 0 :(得分:22)

我正在使用PySide做到这一点。 :)

你使用这个https://gist.github.com/cpbotha/1b42a20c8f3eb9bb7cb8(Sebastian Wiesner的原作是https://github.com/lunaryorn/snippets/blob/master/qt4/designer/pyside_dynamic.py,但已经消失了) - 它会覆盖PySide.QtUiTools.QUiLoader并提供一个新的loadUi()方法,这样你就可以做到这样:

class MyMainWindow(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        loadUi('mainwindow.ui', self)

当您实例化MyMainWindow时,它将具有您使用Qt Designer设计的UI。

如果您还需要使用自定义小部件(Qt Designer中的“推广到”),请参阅以下答案:https://stackoverflow.com/a/14877624/532513