18

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

  1. 使用 Qt Designer 创建一个 .ui 文件。
  2. 创建一个与您在 .ui 文件中创建的小部件类型相同的 python 类。
  3. 初始化 python 类时,使用 uic 将 .ui 文件动态加载到类中。

有没有办法在 PySide 中做类似的事情?我已经阅读了文档和示例,我能找到的最接近的东西是一个计算器示例,它将 .ui 文件预渲染为 python 代码,这是在 PyQt 中执行此操作的超级老方法(为什么将它烘焙到 python什么时候可以解析 ui?)

4

1 回答 1

25

我正在用 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 设计器设计的 UI。

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

于 2013-02-15T12:14:43.277 回答