Pyside2 学习系列一:创建包含ui文件的项目 (超详细的Pyside2 攻略)

6 篇文章 2 订阅

主要是Pyside2的相关文档太少了,不全且大部分是英文的,所以当时想要学习pyside2开发gui的时候,研究的比较多,所以在这里做一个相关的总结。
请注意:这是Pyside2,并不是PyQt,虽然两者的语法差不多,都是python和qt开发ui,但是两者的组成是不一样的,Pyside2是qt官方开发,PyQt是第三方公司开发的,而且两者的调用函数还是有一定区别的。

因为这里需要是ui文件,所以开发的工具是Qt Creator, python 环境是3.6.7。

由于Qt Creator已经默认安装了 pyside2, 所以不需要手动进行安装,如果没有安装的小朋友,需要手动调用 pip3 install PySide2的命令行手动进行安装。

本项目的所有演示代码:github

项目的创建步骤:

1 创建空白Window 项目

1.1 点击New Project -> Qt for Python - Window -> choose...

在这里插入图片描述

1.2 填写项名称:

在这里插入图片描述

1.3 填写文件名:再点击下一步

在这里插入图片描述

1.4 继续点击完成。

在这里插入图片描述

1.5 修改 pymian.py 文件内容

  ```python
  # This Python file uses the following encoding: utf-8
  import sys
  from PySide2.QtWidgets import QApplication, QMainWindow
  
  class PyMain(QMainWindow):
      def __init__(self):
          QMainWindow.__init__(self)
  
  if __name__ == "__main__":
      app = QApplication([])
      window = PyMain()
      window.show()
      sys.exit(app.exec_())
  
  ```

1.6 点击运行会出现 一个空白的window,说明基本配置成功。

在这里插入图片描述

2 开始创建ui文件。

2.1 右键主工程->点击 Add New…

在这里插入图片描述

2.2 选择 Qt Designer Form

在这里插入图片描述

2.3 选择Widget 并点击下一步

在这里插入图片描述

2.4 到我们这里创建了一个 名叫 formmain.ui 的文件

在这里插入图片描述

3 编辑ui文件

3.1 现在进入到 ui文件的编辑页面,随便往地面拖一个按钮和 textedit的控件,并加个约束

在这里插入图片描述

3.2. 保存后,我们能看见我们下载的目录结构是这样的

在这里插入图片描述

4 集成ui文件

4.1 我们现在需要做的是将ui文件集成到我们的代码中来。

由于我们使用的是动态加载ui文件,所以需要导入QUiLoader 类,添加导入

    from PySide2.QtUiTools import QUiLoader

4.2 导入ui

        #这里获取到formmain.ui 的绝对路径
        path = os.path.join(os.path.dirname(__file__), "formmain.ui")
        #将路径传入QUiLoader里面,第二个参数self代表是将PyMain作为ui文件的父控件来进行加载。
        self.myWidget = QUiLoader().load(path, self);

在这里之所以不适用相对路径导入ui文件,是因为在我自己电脑上测试的时候,QUiLoader 根本找不到相对路径下的ui文件。
比如以下代码:

         #case 1 -> 成功
#        path = os.path.join(os.path.dirname(__file__), "formmain.ui")
#        self.myWidget = QUiLoader().load(path, self);

        #case 2 直接使用相对路径 -> 失败
#        self.myWidget = QUiLoader().load("formmain.ui", self);

        #case 3 添加 将ui文件添加到qrc文件后再导入ui文件 -> 失败
#        from PySide2.QtCore import QFile
        loader = QUiLoader()
        file = QFile(":/forms/myform.ui")
        file.open(QFile.ReadOnly)
        myWidget = loader.load(file, self)
        file.close()

case 2 和 case 3 均报同一个错误

QIODevice::read (QFile, ":\forms\myform.ui"): device not open
Designer: An error has occurred while reading the UI file at line 1, column 0: Premature end of document.

5 最终效果

最后会运行出 一个这样的window:
在这里插入图片描述
所有代码:

    # This Python file uses the following encoding: utf-8
import sys, os
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QApplication, QMainWindow

class PyMain(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        #这里获取到formmain.ui 的绝对路径
        path = os.path.join(os.path.dirname(__file__), "formmain.ui")
        #将路径传入QUiLoader里面,第二个参数self代表是将PyMain作为ui文件的父控件来进行加载。
        self.myWidget = QUiLoader().load(path, self);

if __name__ == "__main__":
    app = QApplication([])
    window = PyMain()
    window.show()
    sys.exit(app.exec_())

最后在说一遍,本项目的所有演示代码都可以在这里下载:github

其他章节:
Pyside2 学习系列一:创建包含ui文件的项目 (超详细的Pyside2 攻略)
Pyside2 学习系列二:PyInstaller打包项目exe (超详细的Pyside2 攻略)
Pyside2 学习系列三:PyInstaller打包项目瘦身(超详细的Pyside2 攻略)

参考链接:blog
官方链接:点这里

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值