美文网首页
PySide2 中加载ui文件的两种方法比较

PySide2 中加载ui文件的两种方法比较

作者: xiaojieluo | 来源:发表于2020-09-08 09:14 被阅读0次

PySide2 中有两种加载 .ui 文件的方法

生成 Python 类再加载

先将 QtDesigner 生成的.ui 文件转换成 python 类,再在项目中导入这个类。

可以使用 pyside2-uic 这个工具来实现 ui 文件转 python 类的操作,执行以下命令即可:

    pyside2-uic mainwindow.ui -o ui_mainwindow.py

注意: PySide2 官网中的例子是使用管道将 pyside2-uic 的输出结果直接写入文件中,实测在 windows 下会有 bug, 会输出不可见字符,导致程序无法运行,所以还是建议使用 pyside2-uic 的 -o 参数,输出到文件中
之后可以在项目中直接导入生成的 python 类。

    from ui_mainwindow import Ui_MainWindow

现在开始使用它,我们要先创建一个自定义的类,并在类中使用生成的 ui 类
为了更好的理解,看下面的代码

    import sys
    from PySide2.QtWidgets import QApplication, QMainWindow
    from PySide2.QtCore import QFile
    from ui_mainwindow import Ui_MainWindow

    class MainWindow(QMainWindow):
        def __init__(self):
            super(MainWindow, self).__init__()
            self.ui = Ui_MainWindow()
            self.ui.setupUi(self)

    if __name__ == "__main__":
        app = QApplication(sys.argv)

        window = MainWindow()
        window.show()

        sys.exit(app.exec_())

下面两行负责从UI 文件加载生成的 Python 类

    self.ui = Ui_MainWindow()
    self.ui.setupUi(self)

Note: 每次更改UI文件时,都必须再次运行 pyside2-uic

使用 QUiLoader 直接加载 .ui 文件

直接加载 ui 文件,我们需要使用 QtUiTool 模块

    from PySide2.QtUiTool import QUiLoader

QUiLoader 使我们可以动态加载 ui 文件并立即使用它。

    ui_file = QFile("mainwindow.ui")
    ui_file.open(QFile.ReadOnly)

    loader = QUiLoader()
    window = loader.load(ui_file)
    window.show()

一个完整的示例是像这样的:

    # main.py
    import sys
    from PySide2.QtUiTools import QUiLoader
    from PySide2.QtWidgets import QApplication
    from PySide2.QtCore import QFile, QIODevice

    if __name__ == "__main__":
        app = QApplication(sys.argv)

        ui_file_name = "mainwindow.ui"
        ui_file = QFile(ui_file_name)
        if not ui_file.open(QIODevice.ReadOnly):
            print("Cannot open {}: {}".format(ui_file_name, ui_file.errorString()))
            sys.exit(-1)
        loader = QUiLoader()
        window = loader.load(ui_file)
        ui_file.close()
        if not window:
            print(loader.errorString())
            sys.exit(-1)
        window.show()

        sys.exit(app.exec_())

我们只需要运行下列命令来执行它:

    python main.py

相关文章

  • PySide2 中加载ui文件的两种方法比较

    PySide2 中有两种加载 .ui 文件的方法 生成 Python 类再加载 先将 QtDesigner 生成的...

  • PySide2直接加载ui文件如何操作控件的方法

    问题描述 官方的例子讲了两种使用UI文件的方法,一种是先通过pyside2-uic mainwindow.ui >...

  • 修改pyuic代替pyside2-uic

    最近看到挺多人用pyside2的uic编译ui文件有问题 .写个解决办法. 首先 ,pip install qtp...

  • 树形表格之懒加载动态渲染

    要求:熟悉element-ui中关于table的官方例子——树形数据与懒加载 element-ui中,官方给了两种...

  • 19

    ——文件修改—— 文件修改的主要方法有两种: 一种是先全部加载到内存中,然后进行修改,修改完之后再从内存写回到文件...

  • spark sql 和 hive 关于 parquet sche

    数据加载方式 Spark中操作Parquet文件有两种方式1、直接加载文件spark.read.parquet("...

  • PDFKit使用

    iOS官方提供的PDFKit进行加载PDF使用方法 1、首先明确一个内容就是我们再加载文件的过程中,有两种情况,一...

  • NSStringFromClass加载XIB

    两种加载xib的方法比较,优劣性显而易见。 方法一: [self.tableView registerNib:[U...

  • Fragment

    1.Fragment加载到Activity的两种方法:(1)静态加载,布局中;(2)动态加载,通过fragment...

  • xcode加载json文件的方法

    加载json文件的方法 test.json文件中的内容布局如下

网友评论

      本文标题:PySide2 中加载ui文件的两种方法比较

      本文链接:https://www.haomeiwen.com/subject/xnokektx.html