python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法


Posted in Python onFebruary 26, 2020

PyQt5 Qt Designer (Qt设计师)

PyQt5是对Qt所有类进行封装, Qt能开发的东西, PyQt都能开发.

Qt是强大的GUI库之一, 用C++开发, 并且跨平台.

PyQt双许可证, 要么选择GPL(自由软件协议)将代码开源, 要么选择商业许可交商业许可费.

PySide拥有LGPL 2.1授权许可, 可开发 免费开源软件 和 私有商业软件. 把PyQt5代码切换到PySide2代码是相当容易的, 这也是为什么选择学习PyQt5的原因

准备工作

  1. 安装PyQt5: pip install pyqt5
  2. 安装Qt工具: pip install pyqt5-tools
  3. 配置Qt工具系统环境变量: Path=C:\Code\Python_Vir\python1\Lib\site-packages\pyqt5_tools

Qt Designer (Qt设计师)

强大的可视化GUI设计工具, 帮助我们快速开发PyQt.

它生成UI界面为.ui文件, 通过命令将.ui转为.py文件.

1.启动Qt Designer

执行命令designer, 便会弹出以下界面

python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法

最常用的就是创建 Widget(通用窗口) 和 MainWindow(主窗口), 这里我们创建一个 MainWindow.

下面简单介绍下主要功能:

python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法

文件保存为xxx.ui文件, 可以用文本及编辑打开编辑, 其数据是XML格式的.

2.将xxx.ui文件转为xxx.py文件

通过以下命令行执行, 即可生成 designer_demo.py 文件

pyuic5 -o designer_demo.py designer_demo.ui

3.运行布局文件

导入并继承它

from designer_demo import Ui_MainWindow
class MyDesiger(QMainWindow, Ui_MainWindow):

编写以下代码, 放在designer_demo.py同文件夹下, 运行即可

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from designer_demo import Ui_MainWindow


class MyDesiger(QMainWindow, Ui_MainWindow):
  def __init__(self, parent=None):
    super(MyDesiger, self).__init__(parent)
    self.setupUi(self)

if __name__ == "__main__":
  app = QApplication(sys.argv)
  ui = MyDesiger()
  ui.show()
  sys.exit(app.exec_())

控件箱简介

Layouts 布局 (选中控件 -> Lay out(右键) -> 选择布局)

  • Vertical Layout: 垂直布局
  • Horizontal Layout: 水平布局
  • Grid Layout: 网格布局 (划分为 行 和 列)
  • Form Layout: 表单布局 (左列标签, 右列控件)

Containers 容器

  • Group Box
  • Scroll Area
  • Tool Box
  • Tab Widge
  • Stacked Widget
  • Frame: 帧容器, 可放入布局 / 控件等
  • Widget: 窗口容器
  • MDI Area
  • Dock Widget

Item Widgets 条目控件

  • List Widget: 列表条目
  • Tree Widget: 树形条目
  • Table Widget: 标签页条目

Spacers 间隔(透明)

  • Horizontal Spacer: 水平间隔
  • Vertical Spacer: 垂直间隔

Buttons 按钮

  • Push Button: 按钮
  • Tool Button: 工具箱按钮 (…)
  • Radio Button: 单选框
  • Check Box: 多选框
  • Command Link Button:
  • Dialog Button Box: Dialog 按钮 (ok | cancel)

Input Widgets 输入控件

  • Combo Box: 下拉框
  • Font Combo Box: 字体下拉框
  • Line Edit: 行文本编辑框
  • Text Edit: 文本编辑框
  • Plain Text Edit: 文本编辑框
  • Spin Box: 选择整数值
  • Double Spin Box: 选择浮点数值
  • Time Edit: 时间选择框
  • Data Edit: 日期选择框
  • Data/Time Edit: 日期 时间 选择框
  • Dial: 圆形滚动表盘
  • Horizontal Scroll Bar: 水平滚动条
  • Vertical Scroll Bar: 垂直滚动条
  • Horizontal Slider: 水平拖动条
  • Vertical Slider: 垂直拖动条
  • Key Sequence Edit: 按键编辑框

Display Widgets 显示控件

  • Label: 标签 (显示文字 / 图片等)
  • Text Browser: 文本浏览(不可编辑)
  • Graphics View: 绘画
  • Calendar Widget: 日历
  • LCD Number: LCD数字显示屏
  • Progress Bar: 进度条
  • Horizontal Line: 水平线
  • Vertical Line: 垂直线
  • OpenGL Widget: OpenGl

控件属性简介

objectName: 控件对象名

geometry: 相对坐标(px) x,y,width,height

sizePolicy: 控件大小策略

  • Fixed: 控件有 sizeHint 尺寸且尺寸不变
  • Minimum: 控件有 sizeHint 最小尺寸, 尺寸可变大
  • Maximum: 控件有 sizeHint 最大尺寸, 尺寸可变小
  • Preferred: 控件有 sizeHint 期望尺寸, 有minisizeHint最小尺寸, 尺寸可变大
  • Expanding: 控件有 minisizeHint 最小尺寸, 希望更大尺寸
  • MinimumExpanding: 控件有 sizeHint 最小尺寸, 希望更大磁村
  • Ignored: 无视 sizeHint 和 minisizeHint, 按默认设置

minimumSize: 最小尺寸

maximumSize: 最大尺寸 (固定尺寸: minimumSize=maximumSize)

font: 字体

cursor: 光标

windowTitle: 窗口标题

WindowsIcon: 窗口图标

iconSize: 图标大小

toolTip: 提示泡提示信息

statusTip: 状态栏提示信息

text: 控件文本

shortcut: 快捷键

horizontalSpacer: 水平间距

信号(signal)和槽(slot)

PyQt5处理事件有个signal and slot机制, 事件触发产生信号(signal), 当信号发送(emit())时, 连接的槽(slot)便会执行.

信号与槽的连接

sender.signal.connect(receiver.slot)

# 例子
btn.clicked.connect(self.buttonClicked)

快速连接伙伴 (信号槽)

按F4选择 Edit Signal/Slot 模式 -> 鼠标按住控件1拖拽到控件2上松开 -> 弹出对话框, 选择两边连接事件 -> ok -> 按F3切换回 Edit Widgets 模式

演示:

python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法

菜单栏

菜单栏通过双击 Type Here 添加一级菜单(File), 点开一级菜单双击 Type Here 添加动作(New File), 若点了后面的+, 并添加动作(Text File), 则动作(New File)将变成子菜单.

python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法

并且我们可以在 动作编辑器 里修改 菜单里的动作

python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法

加载资源文件

1.加载资源

python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法

2.使用资源

把Label控件拖到窗口上 -> 属性设置pixmap

3.编译成可执行代码

除了需要把.ui文件转成.py文件外, 还需要把.qrc文件转成.py文件

pyrcc5 app.qrc -o app.py

代码处理

import app
self.label.setPixmap(QtGui.QPixmap(":/pic/designer1.png"))

本文简单介绍了PyQt5 Qt Designer (Qt设计师)的使用方法,更多关于PyQt5 Qt Designer (Qt设计师)的使用方法请查看下面的相关链接

Python 相关文章推荐
Python 执行字符串表达式函数(eval exec execfile)
Aug 11 Python
基于wxpython开发的简单gui计算器实例
May 30 Python
Python中的zipfile模块使用详解
Jun 25 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
对python添加模块路径的三种方法总结
Oct 16 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 Python
代码详解django中数据库设置
Jan 28 Python
python实现监控阿里云账户余额功能
Dec 16 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
在Mac中配置Python虚拟环境过程解析
Jun 22 Python
Python基于pillow库实现生成图片水印
Sep 14 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 #Python
基于Python数据结构之递归与回溯搜索
Feb 26 #Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 #Python
Python基于Dlib的人脸识别系统的实现
Feb 26 #Python
python 回溯法模板详解
Feb 26 #Python
python实现信号时域统计特征提取代码
Feb 26 #Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 #Python
You might like
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
js实现秒表计时器
2019/12/16 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
python生成器用法实例详解
2019/11/22 Python
python关于调用函数外的变量实例
2019/12/26 Python
韩国商务邀请函
2014/01/14 职场文书
情况说明书格式范文
2014/05/06 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
旷课检讨书500字
2014/10/14 职场文书
先进工作者事迹材料
2014/12/23 职场文书
招商银行工作证明
2015/06/17 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python
java实现web实时消息推送的七种方案
2022/07/23 Java/Android