目录
目录
一. 简介
· 什么是pyqt?
· pyqt有哪些优势?
二. 环境搭建
三. pyqt5三个窗口基类
· QmainWindow
· QDialog
· QWidget
四. Pyqt常用组件
· 按钮类
· 显示组件
· 输入组件
· 容器类
五. 组件常用方法
· 文本类控件
· 按钮类控件
· 选择列表类控件
· 容器类控件
· 日期时间类控件
六. GUI常用的两种布局方式
· 绝对位置布局
· 布局类简介
七. setStyleSheet用法
· 窗口基类全局定义
八. QFrame简介
九. exe文件生成
十. 实战篇:写一个测试工具
版本变更信息:
版本号 |
日期 |
填写人 |
变更主要原因描述 |
备注 |
v1.0 |
2022.6.9 |
罗浩铭 |
新增 |
Qt 是使用 C++ 语言编写的跨平台 GUI 库,支持 Windows、Mac OS X 和 Linux。
PyQt 是一个用于创建 GUI(图形界面) 应用程序的跨平台工具包,它将 Python 与 Qt 库融为一体。也就是说, PyQt 允许使用 Python 语言调用 Qt 库中的 API。这样做的最大好处就是在保留了 Qt 高运行效率的同时,大大提高了开发效率。因为使用 Python 语言开发程序要比使用 C++ 语言开发程序快得多。PyQt 对 Qt 做了完整的封装,几乎可以用 PyQt 做 Qt 能做的任何事情。
文档:PyQt5 Reference Guide — PyQt v5.15 Reference Guide
免费的教学视频:http://www.bl186.net/
安装python:
下载链接:https://www.python.org/getit/
安装python编译器pycharm:
http://www.jetbrains.com/pycharm/download/index.html#section=windows
安装PyQt5模块:
win+r 输入cmd
pip install PyQt5 -i Simple Index
安装PyQt5的工具包:
pip install PyQt5-tools -i https://pypi.douban.com/simple
安装可能出现的问题:
安装Pyqt5-tools失败
解决办法:
pip install PyQt5-tools -i https://pypi.douban.com/simple --user
· QmainWindow
QMainWindow 类经常被继承,可以包含菜单栏,工具栏,状态栏,标题栏等,是GUI程序的主窗口。如果我们需要创建主窗口程序,就使用该类。
方法 |
描述 |
addToolBar() |
添加工具栏 |
centralWidget() |
返回窗口中心的控件,未设置返回NULL |
menuBar() |
返回主窗口的菜单栏 |
setCentralWidget() |
设置窗口中心的控件 |
setStatusBar() |
设置状态栏 |
statusBar() |
获取状态栏对象 |
addToolBar():
menuBar():
statusBar():
· QDialog
QDialog是对话框窗口的基类,对话框一般用来执行短期任务,或者与用户进行互动,它可以是模态的也可以是非模态的。QDialog没有菜单栏,工具栏,状态栏等。如果我们需要的是对话框,就选择该类。
QDialog 类的子类主要有 QMessageBox、QFileDialog、QFontDialog、QInputDialog、QColorDialog、QErrorMessage、QProgressDialog、QTabDialog、QWizard 等
· QWidget
该类作为QMainWindow和QWidget的父类,并未细化到主窗口或者对话框,作为通用窗口类,如果不确定具体使用哪种窗口类,就可以使用该类。
QWidget 类是所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标、键盘和其他消息,并在屏幕上绘制自己。一个窗口部件可以被它的父窗口或其他窗口挡住一部分。
QWidget 类直接提供的成员函数:x( )、y( ) 用于获取窗口左上角的坐标,width( )、height( ) 用于获取窗口的宽度和高度。
QWidget 类中的 frameGeometry( ) 方法提供的成员函数:x( )、y( ) 用于获取客户区左上角的坐标,width()、height( ) 用于获取客户区的宽度和高度。
QWidget 类中的 frameGeometry( ) 方法提供的成员函数:x( )、y( ) 用于获取窗口左上角的坐标,width( )、height( ) 用于获取包含客户区、标题栏和边框在内的整个窗口的宽度和高度。
· 按钮类
QPushButton 普通按钮
QToolButton 工具按钮:通常在工具栏使用
QRadioButton 单选框
QCheckBox 复选框
QCommanLinkButton Vista风格的命令链接按钮
QDialogButtonBox 对话框按钮组:确定、取消
· 显示组件
QLabel 标签
QTextBrowser 文本区域
QGraphicsView 图像显示
QCalendarWidget 日历组件
QProgressBar 进度条
QLCDNumber 液晶数字显示
QWebView Web浏览器视图
QDeclarativeView 显示Qt声明的用户接口
· 输入组件
QComboBox 下拉选框
QFontComboBox 字体选择
QLineEdit 单行文本框
QTextEdit 多行文本框(富文本)
QPlainTextEdit 多行文本框(纯文本)
QSpinBox 整数范围调节器
QDoubleSpinBox 实型范围调节器
QDial 环形范围调节器
QSlider 滑动调节器
QTimeEdit 时间输入框
QDateEdit 日期输入框
QDateTimeEdit 时间日期输入框
· 容器类
QFrame 帧窗口
QWidget 界面部件,所有界面对象类的基类
QToolBox 工具栏容器
QTabWidget 多标签容器
QStackedWidget 层次容器,一次只有一个可见
QScollArea 滚动区域
QGroupBox 对象组容器
QMdiArea 多文档容器
QDockWidget 悬浮容器
QDail, QSpinBox的使用
· 文本类控件
· Label标签控件
· lb.setAlignment 设置对齐方式
· lb.setWordWrap(True) 设置文本换行显示
· lb.setOpenExternlLinks(True)设置允许访问超链接
· 为标签设置图片:首先要导入QPixmap,lb.setPixmap(QPixmap('图片路径'))
· LineEdit 单行文本框
· setPlaceholderText() 设置文本框浮现文字
· setManLength() 设置允许文本框内输入字符的最大长度
· setAlignment() 设置文本对齐方式
· setReadOnly() 设置文本框只读
· setEchoMode 设置文本框显示字符的模式 le.NoEcho 不显示任何输入的字符 le.password 显示与平台相关的密码掩码字符,而不是实际输入的字符,le.PasswordEchoOnEdit 在编辑时显示字符,失去焦点后显示密码掩码字符
· setValidator
· QIntValidatoe :限制输入整数
· QDoubleValidator: 限制输入小数
· QEegExpValidator: 检查输入是否符合设置的正则表达式
· clear() 清除文本框内容
· TextEdit 多行文本框
· setPlainText() 设置文本内容
· toPlainText() 获取文本内容
· setTextColor(QtGui.QColor)设置文本颜色
· setTextBackgroundColor()设置文本的背景颜色
· setWordWrapMode()设置自动换行
· SpinBox 整数数字选择控件
· setValue()设置控件的当前值
· setMaximum()设置最大者
· setMinimum()设置最小值
· setRange()设置取值范围
· setSingleStep() 单机上下箭头的步长值
· DoubleSpinBox 小数数字选择控件
· LCDNumber 液晶数字显示控件
· 按钮类控件
· setIcon() 设置按钮上的图标,可以将参数设置为QtGui.QIcon('图标路径')
· setIconSize() 参数可以设置为QtCore.QSize(width,height)
· setEnabled()
· setShortcut()
· 选择列表类控件
· comboBox 下拉组合框
· addItem() 添加一个下拉列表框
· addItems() 从列表中添加下拉选项
· currentText()获取选中项的文本
· currentIndex()获取选中项的索引
· itemText(index) 获取索引为index的项的文本
· setItemText(index,text)设置索引为index的项的文本
· count() 获取所有选项的数量
· clear() 删除所有选项
· 常用信号:actived和currentIndexChanged actived信号在选中一个下拉选项时发射,currentIndexChanged信号在下拉选项的索引发生改变时发射
· QListWidget
· addItem() 向列表中添加项
· addItems() 一次向列表中添加多项
· insertItem() 在指定索引处插入项
· setCurrentItem() 设置当前选择项
· item.setToolTip()设置提示内容
· item.isSelected()判断项是否选中
· setWordWrap()设置是否自动换行
· setViewMode()设置显示模式
· item.text()获取项的文本
· clear()删除所有列表项
· 容器类控件
· GroupBox
· setTitle()设置分组标题
· ToolBox
· addItem() 添加选项卡
· setCurrentIndex() 设置当前选中的选项卡索引
· setItemIcon() 设置选项卡的图标
· setItemText()设置选项卡的标题文本
· setItemEnabled() 设置选项卡是否可用
· insertItem() 插入新选项卡
· removeItem() 移除选项卡
· itemText() 获取选项卡的文本
· currentIndex() 获取当前选项卡的索引
· 日期时间类控件
· CalendarWidget
· setMinimumDate() 设置最小日期
· setMaximumDate 设置最大日期
· setFirstDayOfWeek 设置一周的第一天 Qt.Monday
· setGridVisible 设置是否显示网格线
· setSelectionMode 设置选择模式 1.QCalendarWidget.NoSelection:不能选中日期 2.QCalendarWidget.SingleSelection
· setHorizontallHeaderFormat 设置水平头部格式
· QCalendarWidget.NoHorizontalHeader 不显示水平头部
· QCalendarWidget.SingleLetterDayNames:"周"
· QCalendarWidget.ShortDayNames:简短天的名称,如:周一
· QCalendarWidget.LongDayNames: 完整天的名称 如“星期一”
· setNavigationBarVisible 设置是否显示导航栏
· setDateEditEnabled 设置是否可以编辑日期
· setDateEditAcceptDelay() 设置编辑日期的最长间隔
· selectedDate()获取选择的日期,返回值而QDate类型
· 常用的信号时selectionChanged,该信号的选择的日期发生改变时发射
· QDateTimeEdit
· setTime设置时间
· setMaximumTime() 设置最大时间
· setMinimumTime()设置最小时间
· setTimeSpec()获取显示的时间标准
· LocalTime 本地时间
· UTC 世界标准时间
· setDate()设置日期
· setMaximumDate()设置最大日期
· setMinimumDate()设置最小日期
· setDisplayFormat() 设置日期时间显示样式
· 日期样式:yyyy/MM/dd
· 时间样式:HH:mm:ss
· date()获取显示的日期,返回QDate类型
· time()获取显示的时间,返回值为QTime类型
· dateTime()获取显示的日期时间,返回值为QDateTime类型
· 常用信号
· timeChanged 时间发生改变时发射
· dateChanged 日期发生改变时发射
· dateTimeChanged 日期或者时间发生改变时发射
· 绝对位置布局
组件不放在布局管理器种,而通过函数setGeometry(x, y, width, height)来设定组件相对其父窗口的位置。其中x, y是组件左上角的坐标,width, height是组件的宽和高。在绝对位置布局中,resize()函数可以调整组件尺寸,setGeometry( ) 函数可以调整组件位置和尺寸,甚至重载 sizeHint( ) 函数也可以设定组件尺寸。采用绝对位置布局方式,组件的位置和尺寸固定,并不会随着父窗口位置和尺寸的改变而发生改变。
例:
· 布局类简介
常用的布局类如下:
· 水平布局管理器(QHBoxLayout)可以把添加的控件以水平的顺序依次排开;