python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法


Posted in Python onFebruary 14, 2020

本文主要列出来python图形开发GUI库pyqt5的窗体,控件属性与方法如果你想看看python图形开发GUI库pyqt5的基础使用方法可以查看我们的另一篇文章 python图形开发GUI库pyqt5的基本使用方法详解

基本框架

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class Demo(QWidget):     
  def __init__(self):
    super(Demo, self).__init__()
    # 设置主界面
    # 设置控件
    # 设置布局
    # 设置信号
	def main(self):
  	# 槽函数
if __name__ == '__main__':
  app = QApplication(sys.argv)
  demo = Demo()  
  demo.show()   
  sys.exit(app.exec_())

程序启动画面

if __name__ == '__main__':
	app = QApplication(sys.argv) # 原有

	splash = QSplashScreen()
	splash.setPixmap(QPixmap('images/splash.jpg'))
	splash.show()
	splash.showMessage('string', Qt.AlignBottom | Qt.AlignCenter, Qt.white)

	demo = Demo() # 原有
	demo.show() # 原有
	
	splash.finish(demo)

	sys.exit(app.exec_()) # 原有

一、设置主界面

self.setWindowTitle('title') # 设置窗体名称

self.setWindowIcon('path') # 设置窗体图标

self.resize(300, 250) # 更改窗体大小

self.size() # 获取窗体大小

self.width() # 获取窗体宽度

self.height() # 获取窗体高度

self.setFixedWidth(int width) # 设置窗体宽度

self.setFixedHeight(int height) # 设置窗体高度

self.setFixedSize(int width, int height) # 设置窗体大小

self.setGeometry(int x, int y, int width, int height) # 设置窗口位置

self.frameGeometry() # 获取窗口的大小和位置

self.move(int x, int y) # 设置窗口的位置

self.pos() # 获取窗口左上角坐标

self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint) # 禁止最大化按钮

self.setFixedSize(self.width(), self.height()) # 禁止拉伸窗口大小

二、设置控件

1、QMessageBox消息框

1、基本格式

QMessageBox.information(QWidget, ‘Title', 'Content‘, buttons)

第一个参数填self,表示该信息框属于我们这里的Demo窗口;第二个参数类型为字符串,填入的是该信息框的标题;第三个参数类型也是字符串,填入的是信息框的提示内容;最后个参数为信息框上要添加的按钮。多个按钮之间用 | 来连接,常见的按钮种类有以下几种:

QMessageBox.Ok

QMessageBox.Yes

QMessageBox.No

QMessageBox.Close

QMessageBox.Cancel

QMessage.Open

QMessage.Save

2、各种类型的框

类型 名称
QMessageBox.information 消息框
QMessageBox.question 问答框
QMessageBox.warning 警告框
QMessageBox.critical 错误框
QMessageBox.about 关于框

3、与消息框进行交互

choice = QMessageBox.question(self, 'Title', 'Content', QMessageBox.Yes | QMessageBox.No) 
if choice == QMessageBox.Yes:  
  pass
elif choice == QMessageBox.No: 
	pass

2、文本编辑框和文本浏览框

实例化控件

self.text_edit = QTextEdit(self) # 文本编辑框

self.text_browser = QTextBrowser(self) # 文本浏览框

设置信号

控件类型 信号 描述
QTextEdit textChanged 文本发生改变

控件方法

控件类型 方法 描述
QTextEdit setText(‘Content') 设置文本
QTextEdit toPlainText() 获取文本
QTextEdit setTextColor(color) 设置文本颜色
QTextEdit setFont(font) 设置字体

3、各种按钮

QPushButton,QToolButton,QRadioButton和QCheckBox均继承自QAbstractButton类

实例化控件

self.test_button = QPushButton('Test', self) # 实例化按钮

self.test_button = QPushButton('&Download',self) # 实例化按钮并设置快捷键为Alt+D

self.test_button = QToolButton(self) # 工具按钮(初始不能传入文本)

self.on_button = QRadioButton('on', self) # 单选按钮

self.checkbox1 = QCheckBox('Checkbox 1', self) # 复选框的三种状态:全选中、半选中和无选中

设置信号

控件类型 信号 描述
通用 Pressed 当鼠标指针在按钮上并按下左键时触发该信号
通用 Released 当鼠标左键被释放时触发该信号
通用 Clicked 当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号
通用 Toggled 当按钮的标记状态发生改变时触发该信号
QCheckBox stateChanged 复选框状态发生改变

控件方法

控件类型 方法 描述
通用 isDown() 提示按钮是否已按下
通用 isChecked() 提示按钮是否已经标记
通用 isEnable() 提示按钮是否可以被用户点击
通用 isCheckAble() 提示按钮是否为可标记的
通用 setAutoRepeat() 设置按钮是否在用户长按时可以自动重复执行
通用 setShortcut(‘Ctrl+D') 设置按钮快捷键
QPushButton setCheckable(True) 设置按钮是否已经被选中,如果设置True,则表示按钮将保持已点击和释放状态
QPushButton toggle() 在按钮状态之间进行切换
QPushButton setIcon(QIcon(‘button.png')) 设置图标
QPushButton setEnabled() 设置按钮是否可以使用,当设置为False时,按钮变成不可用状态,点击它不会发射信号
QPushButton isChecked() 判断按钮是否为标记状态,若是则返回True,不是则返回False
QPushButton setDefault() 设置按钮的默认状态
QPushButton setText(‘text') 设置按钮的显示文本
QPushButton text() 返回按钮的显示文本
QToolButton setArrowType(参数1) 设定button上显示的箭头类型
QToolButton setToolButtonStyle(参数2) 设定button文本和图标显示的样式
QRadioButton setChecked(True) 单选按钮设为选中状态
QCheckBox setChecked(True) 将复选框设为选中或无选中状态
QCheckBox setCheckState(Qt.Checked) 选中状态Qt.Checked, 无选中状态Qt.Unchecked和半选中状态Qt.PartiallyChecked
QCheckBox setTristate(True) 让一个复选框拥有三种状态
QCheckBox setCheckState(Qt.PartiallyChecked) 让一个复选框拥有三种状态
QCheckBox checkState() 获取当前复选框的状态,返回值为int类型,0为无选中状态,1为半选中状态,2为选中状态
参数1 箭头属性
Qt.NoArrow 无箭头
Qt.UpArrow 向上的箭头
Qt.DownArrow 向下的箭头
Qt.LeftArrow 向左的箭头
Qt.RightArrow 向右的箭头
参数2 样式
Qt.ToolButtonIconOnly 只显示图标
Qt.ToolButtonTextOnly 只显示文本
Qt.ToolButtonTextBesideIcon 文本在图标下面
Qt.ToolButtonTextUnderIcon 文本在图标上面
Qt.ToolButtonFollowStyle 未知…

4、标签

实例化控件

self.label = QLabel(self) 

控件方法

控件类型 方法 描述
QLabel setPixmap(QPixmap(‘on.png')) 给标签设置图片
QLabel setAlignment(Qt.AlignCenter) 设置标签对齐方式

5、单行文本框

实例化控件

self.lineedit = QLineEdit(self)

控件方法

控件类型 方法 描述
QLineEdit setFont(combobox.currentFont()) 设置字体
QLineEdit setPlaceholderText() 设置文本框显示文字
QLineEdit setMaxLength() 设置文本框所允许输入的最大字符数
QLineEdit setReadOnly() 设置文本为只读
QLineEdit setText() 设置文本框的内容
QLineEdit text() 返回文本框的内容
QLineEdit setDragEnable() 设置文本框是否接受拖动
QLineEdit selectAll() 全选
QLineEdit setFocus() 得到焦点
QLineEdit setAlignment(参数1) 按固定值方式对齐文本
QLineEdit setEchoMode(参数2) 设置文本框的显示格式
QLineEdit setValidator(参数3) 设置文本框的验证器(验证规则),将限制任意可能输入的文本
QLineEdit setInputMask(参数4) 设置掩码
参数1 功能
Qt.AlignLeft 水平方向靠左对齐
Qt.AlignRight 水平方向靠右对齐
Qt.AlignCenter 水平方向居中对齐
Qt.AlignJustify 水平方向调整间距两端对齐
Qt.AlignTop 垂直方向靠上对齐
Qt.AlignBottom 垂直方向靠下对齐
Qt.AlignVCenter 垂直方向居中对齐
参数2 功能
QLineEdit.Normal 正常显示所输入的字符,此为默认选项
QLineEdit.NoEcho 不显示任何输入的字符,常用于密码类型的输入,且长度保密
QLineEdit.Password 显示与平台相关的密码掩饰字符,而不是实际输入的字符
QLineEdit.PasswordEchoOnEdit 在编辑时显示字符,负责显示密码类型的输入
参数3 功能
QIntValidator 限制输入整数
QDoubleValidator 限制输入浮点数
QRegexpValidator 检查输入是否符合正则表达式
参数4 功能
000.000.000.000;_ ip地址,空白字符是‘_'
HH:HH:HH:HH:HH:HH; MAC地址
0000-00-00 日期,空白字符是空格
>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;# 许可证号,空白字符是‘_',所有字母都转换为大写

设置信号

控件类型 信号 描述
QLineEdit selectionChanged 只要选择改变了,这个信号就会发射
QLineEdit textChanged 当修改文本内容时,这个信号就会发射
QLineEdit editingFinished 当编辑文本结束时,这个信号就会发射

6、下拉选择框和数字调节框

实例化控件

self.combobox_1 = QComboBox(self) # 普通下拉框(无内容)

self.combobox_2 = QFontComboBox(self) # 字体下拉框(有字体选择)

self.spinbox = QSpinBox(self) # 数字调节框(默认范围0-99)

self.doublespinbox = QDoubleSpinBox(self) # 浮点数字调节框(默认范围0.00-99.99)

设置信号

控件类型 信号 描述
QComboBox currentIndexChanged 序号发生变化
QComboBox currentTextChanged 文本发生变化
QSpinBox valueChanged 数字发生变化

控件方法

控件类型 方法 描述
QComboBox addItem(self.choice) 添加一个选项
QComboBox addItems(self.choice_list) 添加多个选项
QComboBox currentIndex() 获取当前文本序号
QComboBox currentText() 获取当前文本
QComboBox currentFont() 获取当前字体
QDoubleSpinBox setDecimals(int) 设置小数位数
QSpinBox setRange(-99, 99) 设置范围
QSpinBox setSingleStep(1) 设置步长,即每次点击递增或递减多少值
QSpinBox setValue(66) 设置初始显示值
QSpinBox value() 获取值
QSpinBox setValue(value) 设置调节框的值

7、滑动条和旋钮

实例化控件

self.slider_1 = QSlider(Qt.Horizontal, self) # 水平滑动条

self.slider_2 = QSlider(Qt.Vertical, self) # 垂直滑动条

self.dial = QDial(self) # 旋钮

设置信号

控件类型 信号 描述
QSlider valueChanged 数值发生改变
QDial valueChanged 改变表盘数值

控件方法

控件类型 方法 描述
QSlider setRange(0, 100) 设置滑动条的范围
QSlider setMinimum(0) 设置最小值
QSlider setMaximum(100) 设置最大值
QSlider value() 获取值
QSlider setValue(value) 设置值
QDial setFixedSize(100, 100) 固定旋钮的大小
QDial setRange(0, 100) 设置表盘数值范围
QDial setMinimum(0) 设置最小值
QDial setMaximum(100) 设置最大值
QDial setNotchesVisible(True) 显示刻度

8、定时器和进度条

实例化控件

控件类型 信号 描述
QTimer timeout timer.start()结束时触发

控件方法

控件类型 方法 描述
QTimer isActive() 判断定时器是否处于激活状态
QTimer start(100) 启动计时器持续100毫秒
QTimer stop() 停止计时器
QTimer setSingleShot(True) 触发timeout信号后只调用一次update_func()
QProgressBar setMinimum(0) 设置最小值
QProgressBar setMaximum(100) 设置最大值
QProgressBar setRange(0, 100) 设置范围
QProgressBar setValue(value) 设置进度条当前值
QProgressBar reset() 重置进度条的值

9、数字显示屏

实例化控件

self.lcd = QLCDNumber(self) # 数字显示屏

控件方法

控件类型 方法 描述
QLCDNumber setDigitCount(10) 设置显示多少位数字
QLCDNumber display(1234567890) 显示数字
QLCDNumber setSegmentStyle(参数1) 设置显示屏数字样式
QLCDNumber setSmallDecimalPoint(True) 设置小数点的显示方式,若为True,则占位,若为False,则会单独占位
QLCDNumber display(0.123456789) 显示数字
QLCDNumber display(‘HELLO') 显示字母
QLCDNumber setMode(参数2) 更改数字显示方式
参数1 描述
QLCDNumber.Outline 0 让内容浮显,其颜色同显示屏背景颜色相同
QLCDNumber.Filled 1 让内容浮显,颜色同窗口标题颜色相同
QLCDNumber.Flat 2 让内容扁平化显示,颜色同窗口标题颜色相同
参数2 描述
QLCDNumber.Hex 0 十六进制
QLCDNumber.Dec 1 十进制
QLCDNumber.Oct 2 八进制
QLCDNumber.Bin 3 二进制

三、设置布局

1、实例化布局

v_layout = QVBoxLayout() # 垂直布局

h_layout = QHBoxLayout() # 水平布局

form_layout = QFormLayout() # 表单布局

grid_layout = QGridLayout() # 网格布局

2、给布局添加占位符|控件|布局

self.label.setAlignment(Qt.AlignCenter) # 设置居中方式

h_layout.addStretch(1) # 设置占位符

v_layout.addWidget(self.user_label) # 垂直布局添加控件

h_layout.addWidget(self.user_line) # 水平布局添加控件

all_v_layout.addLayout(v_layout) # 垂直布局添加垂直布局

all_h_layout.addLayout(h_layout) # 水平布局添加水平布局

form_layout.addRow(self.user_label, self.user_line) # 表单布局添加控件

grid_layout.addWidget(self.user_label, 0, 0, 1, 1) # 网格布局添加控件

grid_layout.addWidget(self.user_label, 0, 0) # 默认是1行1列

QGridLayout的addWidget()方法遵循如下语法形式:

addWidget(widget, row, column, rowSpan, columnSpan)

widget就是要添加的控件;row为第几行,0代表第一行;column为第几列,0代表第一列;rowSpan表示要让这个控件去占用几行(默认一行);columnSpan表示要让这个控件去占用几列(默认一列)。

3、设为整个窗口的最终布局方式

self.setLayout(all_h_layout)

四、各种对话框

1、颜色对话框和字体对话框

color = QColorDialog.getColor() # 颜色对话框(十六进制的值会保存在color变量中)
if color.isValid(): # 判断color是否有效
	self.text_edit.setTextColor(color)

font, ok = QFontDialog.getFont() # 字体对话框
if ok:
	self.text_edit.setFont(font)

2、输入对话框

方法 用法
getItem() 从下拉框中获取选项输入
getInt() 获取整型值输入
getDouble() 获取浮点型值输入
getText() 获取字符串输入
getMultiLineText() 获取多行字符串输入

实例:

content, ok = QInputDialog.getText(self, 'title', 'content')

content, ok = QInputDialog.getInt(self, 'title', 'content')

content, ok = QInputDialog.getDouble(self, 'title', 'content')

content, ok = QInputDialog.getMultiLineText(self, 'title', 'content')

Item, ok = QInputDialog.getItem(self, 'title', 'content', list, 0, False)

getItem(parent, str, str, iterable, int, bool)方法需要多设置几个参数,前三个与getText()相同,第四个参数为要加入的选项内容,第五个参数为最初显示的选项,最后一个参数是选项内容是否可编辑。

3、文件对话框

path, _ = QFileDialog.getSaveFileName(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 选择保存文件

path, _ = QFileDialog.getOpenFileName(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 选择文件

path, _ = QFileDialog.getOpenFileNames(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 选择多个文件

path, _ = QFileDialog.getExistingDirectory(self, 'title', './') # 选择文件夹

参数:指定父类,文件对话框的标题,对话框打开时显示的路径,文件扩展名过滤器

其中设置文件扩展名过滤,用双分号间隔。

'All Files (*);;PDF Files (*.pdf);;Text Files (*.txt)'

五、界面关闭事件

def closeEvent(self, QCloseEvent): # 关闭事件函数
	if not self.saved: # 如果未保存
		choice = QMessageBox.question(self, '', 'Do you want to save the text?', QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)
		if choice == QMessageBox.Yes: # 如果需要继续保存
			self.saved_func()	# 调用函数进行保存
			QCloseEvent.accept()	# 接受关闭事件
		elif choice == QMessageBox.No: # 如果不需要继续保存
			QCloseEvent.accept()	# 接受关闭事件
		else:
  		QCloseEvent.ignore()	# 忽略关闭事件

更多关于python图形开发GUI库pyqt5的使用方法请查看下面的相关链接

Python 相关文章推荐
用Python编写一个简单的FUSE文件系统的教程
Apr 02 Python
简单介绍Python的Django框架的dj-scaffold项目
May 30 Python
自己编程中遇到的Python错误和解决方法汇总整理
Jun 03 Python
Python字符串格式化输出方法分析
Apr 13 Python
Python 制作糗事百科爬虫实例
Sep 22 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
python读取和保存视频文件
Apr 16 Python
为什么你还不懂得怎么使用Python协程
May 13 Python
基于numpy中的expand_dims函数用法
Dec 18 Python
Pytorch: 自定义网络层实例
Jan 07 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
基于Python爬虫采集天气网实时信息
Jun 05 Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 #Python
Python 写了个新型冠状病毒疫情传播模拟程序
Feb 14 #Python
在pycharm中实现删除bookmark
Feb 14 #Python
python图形开发GUI库wxpython使用方法详解
Feb 14 #Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 #Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
Feb 14 #Python
Python实现名片管理系统
Feb 14 #Python
You might like
PHP中mysql_field_type()函数用法
2014/11/24 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
浅析vue深复制
2018/01/29 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
python读写二进制文件的方法
2015/05/09 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
python解释器spython使用及原理解析
2019/08/24 Python
python中remove函数的踩坑记录
2021/01/04 Python
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
集团公司人力资源部岗位职责
2014/01/03 职场文书
《钱学森》听课反思
2014/03/01 职场文书
高中军训感想300字
2014/03/04 职场文书
租车协议书范本
2014/04/22 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
Python3 如何开启自带http服务
2021/05/18 Python