Form Layout:类似登录前面是提示,后面是输入框
List View
Undo View:可撤回操作
List Widget:列表组件
MDI Area:可以打开多个窗口的区域
Dock Widget:悬停在主窗口的组件
Stacked Widget:类似安装提示,左边是列表,右边是具体的页面
Dial:类似王者荣耀的移动按钮
Key Sequence Edit:用来定义流程图的
Font Combo Box:字体选择组件
graphics View:画图组件
OpenGL Widget:放图片用的组件
Horezontal Spacer:横向分割线
先拖动布局,将layout拖动到mainwindows 如果靠边界会显示蓝线,以此作为布局的标准。
下拉列表框combobox
expanding:展开的
我们要理解qt里面的一个机制—“信号槽”。简单的说,假如界面有一个按钮,点击就会弹出对话框,那么”点击”这个动作就是信号,“弹出对话框”的实现就是通过槽做到的。
spacers 间隔线条
widget小工具,小部件
QGridLayout 改变大小时,每个网格都会随着比例改变;
QFormLayout改变大小时,只有最右侧的一列网格会改变.
设计好ui页面文件后,保存的文件后缀是.ui,不能直接被python文件调用,所以需要使用pyuic工具转成.py文件
控件箱简介
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 模式
演示:
菜单栏
菜单栏通过双击 Type Here 添加一级菜单(File), 点开一级菜单双击 Type Here 添加动作(New File), 若点了后面的+, 并添加动作(Text File), 则动作(New File)将变成子菜单.
并且我们可以在 动作编辑器 里修改 菜单里的动作
加载资源文件
1.加载资源
2.使用资源
把Label控件拖到窗口上 -> 属性设置pixmap
3.编译成可执行代码
除了需要把.ui文件转成.py文件外, 还需要把.qrc文件转成.py文件
pyrcc5 app.qrc -o app.py
代码处理
import app
self.label.setPixmap(QtGui.QPixmap(":/pic/designer1.png"))
enabled 窗口部件是否有效
geometry 窗口部件相对于其父窗口的几何图形,并排除窗口框架
sizePolicy 窗口部件的默认布局行为
minimumSize 窗口部部件的最小尺寸(以像素为单位)
maximumSize 窗口部部件的最大尺寸(以像素为单位)
sizeIncrement 窗口部件的大小增量
baseSize 窗口部件的基本大小
palette 窗口部件的调色板
font 窗口部件当前的字体集
cursor 窗口部件的光标外形
mouseTracking 窗口部件跟踪鼠标是否生效
tabletTracking 窗口部件是否启用了平板电脑跟踪
focusPolicy 窗口部件接收键盘焦点的策略
contextMenuPolicy 窗口部件如何显示上下文菜单
acceptDrops 窗口部件中拖拽事件是否有效,设置为true会向系统通知此窗口小部件可能能够接受放置事件
windowTitle 窗口标题
windowIcon 窗口部件的图标
windowOpacity 窗口的不透明度级别
toolTip 窗口部件的工具提示
toolTipDuration 窗口部件的工具提示持续时间(以毫秒为单位)。如果值为-1(默认值),则根据工具提示的长度计算持续时间。
statusTip 窗口部件的状态提示
whatsThis 窗口部件的“这是什么”帮助文本
accessibleName 窗口部件名称(通过一些辅助技术工具才可见)
accessibleDescription 控件说明(通过一些辅助技术工具才可见),默认为空
layoutDirection 窗口部件的布局方向
autoFillBackground 窗口部件背景是否自动填充
styleSheet 窗口部件的样式表
locale 窗口部件的区域设置
windowFilePath 窗口部件关联的文件路径
inputMethodHints 具体的输入方法提示小部件具有什么
windowModality 哪个窗口被模态部件阻塞
Fixed: 大小不能改变
Minimum: 已经是最小, 不能再被缩小, 但能放大.
Maximum: 已经是最大, 不能再被放大, 但能缩小.
Preferred: 控件的sizeHint()是他的sizeHint, 能被缩小, 放大.
Expanding: 控件可以自行增大或者缩小.
btn.setToolTip('This is a <b>QPushButton</b> widget')
btn.resize(btn.sizeHint())#sizeHint()方法提供了一个默认的按钮大小。
QCoreApplication.instance().quitQCoreApplication包含了事件的主循环,它能添加和删除所有的事件,instance()创建了一个它的实例。QCoreApplication是在QApplication里创建的。 点击事件和能终止进程并退出应用的quit函数绑定在了一起。在发送者和接受者之间建立了通讯,发送者就是按钮,接受者就是应用对象。
QtGui.QDesktopWidget提供了用户的桌面信息
qtdesigner文档
http://qt5.digitser.net/5.15/zh-CN/designer-quick-start.html
使用dock widget和mdi area结合 再添加状态栏,工具栏和菜单栏。
dock widget
QDockWidget类提供了一个特殊的窗口部件,它可以是被锁在QMainWindow窗口内部或者是作为顶级窗口悬浮在桌面上。
mdiarea
QMdiArea(Multiple Document Interface Area)提供了一个可以同时显示多个文档窗口的区域。
plain text edit 设置水平滚动,linewrapmode 设置为nowrap
policy:策略
qtcreator安装
https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.9/5.9.0/