PyQt控件使用

Arya Lv3

前言✨

  • “QtCore”模块主要包含了一些非GUI的基础功能,包含事件循环与Qt的信号机制。此外,还提供了跨平台的Unicode、线程、内存映射文件、共享内存、正则表达式和用户设置。
  • “QtWigets”模块包含了大多数的控件类型。包含按钮、文本框、列表等常见控件
  • ““uic”子模块能够将Qt的窗体文件转换为Python代码,能够即时读入窗体文件并且显示出来。
参考来自于[维基百科](https://zh.wikipedia.org/wiki/PyQt)

PyQt控件的使用⛏️

PyQt控件通常在QtWidgets模块下,通过PyQt文档 可以查询具体的用法。下面是我常用的一些PyQt控件的用法总结:

QFrame🖽🏷️📋

QFrame是一些有边框控件的基类,这些控件包括QLabel,QSrollArea,QListWidget,QTableWidget等等
下面是QFrame的一些方法,用于调整边框样式。
参考来自:Qt文档

方法 含义
frameWidth 返回边框的宽度
setLineWidth(int) 设置外边框的宽度
setMidLineWidth(int) 设置中间边框的宽度
setFrameShape(QtWidgets.QFrame.Shape) 设置边框的形状,常用的有QFrame.StyledPanel

QLabel

标签控件,用于显示文字和图片。下面是它的一些属性和方法:

方法 含义
setText(string) 设置标签文字
text() 返回标签的文字
pixmap() 返回图片
setAlignment(QtCore.Qt.AlignmentFlag) 设置对齐方式
setPicture(QtGui.QPicture) 设置图片

QListWidget

列表框,是一个显示列表的控件。下面是它的一些方法🌰:

方法 含义
count() 返回列表中项目的数量
currentRow() 返回现在选择的行数(int类型)
currentItem() 返回现在所选项目,QtWidgets.QListWidgetItem类型
clear() 清除列表框中所有的项目
addItem(string) 往列表框中添加项目
addItems(list) 往列表框中添加一些项目
addItems(list) 往列表框中添加一些项目
setCurrentItem(item) 把当前选择项设置为
removeItemWidget(item) 移除给出项
setSortingEnabled(bool) 设置是否允许列表进行排序
sortItems(QtCore.Qt.SortOrder) 有两个参数可选,Qt.AscendingOrder(从A到Z排序),Qt.DescendingOrder(从Z到A排序)

下面是QListWidget提供的一些信号
使用方法🌰:
self.mySignal.connect(self.mySlot)
信号 含义
currentItemChanged 当选择项目改变时触发的信号
itemClicked(item) 当点击该项时触发信号

QListWidgetItem

列表项目类,是QListWiget中的列表项。

下面是QListWidgetItem中的方法🌰:
参考来自:Qt文档

方法 含义
text() 得到该项目文字
setText(string) 设置项目的文本
setTextAlignment(QtCore.Qt.AlignmentFlag) 设置每一项列表的背景颜色
setBackground(QtGui.QBrush) 设置每一项列表的背景颜色
setForeground(QtGui.QBrush) 设置每一项列表的前景颜色
setHidden(bool) 设置项目是否隐藏
setSelected(bool) 设置当前状态为选中状态
setSizeHint(QtCore.QSize) 设置行高
setToolTip(string) 设置提示文字

QScrollArea

滑块。给大块的控件提供可滑动视图。(有待研究)

下面是QListWidgetItem中的方法🌰:
参考来自:Qt文档

方法 含义
setWidget(QWidget) 设置需要进行滑动的控件,需要在调用这个函数之前给控件添加布局,否则控件会看不见。
setWidgetResizable(True) 设置控件是否可自适应大小,默认为False,有时候控件看不见也是因为这个选项没有设置为True。

QAbstractButton🖱️

QAbstractButton类为抽象类,不能实例化,是QPushButton,QToolButton,QRadioButton和QCheckBox等的基类。

下面的方法用于判断按钮的状态🌰:

参考来自:jia666666的博客

用于判断的状态 含义
isChecked() 是否勾选按钮
isEnable() 按钮是否可用
isCheckable() 按钮可否被勾选

下面是获取按钮属性或者对按钮进行控制的一些函数🌰:
方法 含义
setCheckable(bool) 设置按钮是否可以被勾选
setEnabled(bool) 设置按钮是否可用
setIcon() 设置按钮的图标
icon() 返回按钮的图标
text() 返回按钮的文字

下面是QAbstractButton提供的一些信号🌰:
self.mySignal.connect(self.mySlot)
发出的信号 含义
Pressed 按下按钮触发的信号
Clicked 点击按钮触发的信号
Toggled 按钮状态发生改变触发的信号

QPushButton

QPushButton继承QAbstractButton的方法,基本上使用的方法都是QAbstractButton存在的,它自己的方法没有什么常用到的,这里就不过多赘述了。

QCheckBox

复选框一般情况下有两种状态:勾选和不勾选,可以将复选框设置为三态模式,进行更多情况的使用,三态模式分别为:勾选、半勾选、不勾选。(PySide6.QtCore.Qt.CheckState)

参考来自:jia666666的博客

状态 含义
Qt.Checked 2 勾选状态
Qt.PartiallyChecked 1 半勾选状态
Qt.Unchecked 0 不勾选状态

方法 含义
checkState() 返回复选框的状态
isTristate() 判断复选框是否是三态模式
setChecked(bool) 表示复选框是否勾选
setCheckState(PySide6.QtCore.Qt.CheckState) 设置复选框的状态
setTristate([bool]) 设置复选框是否为三态模式

QRadioButton

QRadioButton(单选框)继承QAbstractButton的方法,基本上使用的方法都是QAbstractButton存在的,唯一一点事QRaidoButton有组的特性,每一组RadioButton只能有一个按钮被激活。

方法 含义
group() 返回RadioButton所在的组

输入控件✒️

QLineEdit

该控件可以控制或者限制用户的输入行为。通过掩码属性(setInputMask)和验证器(setValidator)来达到。

下面是QLineEdit提供的一些方法🌰:
参考来自:Qt文档

方法 含义
setText(string) 设置输入框中的文本
text() 返回输入框中的文字
setReadOnly(bool) 设置文本是否为只读
setClearButtonEnabled(bool) 设置输入框是否有清空输入的按钮
placeholderText() 返回保持文本
setPlaceholderText(string) 设置保持文本
alignment() 返回文本对齐样式
setAlignment(QtCore.Qt.AlignmentFlag) 设置文本对齐样式
setMaxLength(int) 设置文本最大字符数
setInputMask(inputMask) 设置掩码
setValidator(QtGui.QValidator) 设置验证器
setEchoMode(PySide6.QtWidgets.QLineEdit.EchoMode) 输入字符的显示设置
常用信号:
信号 含义
selectionChanged 点击发生改变时触发信号
textChanged 修改文本内容时触发信号
editingFinished 文本编辑结束时触发信号

QComboBox

下拉列表框,在下拉列表中提供一些选项供给选择

下面是QComboBox提供的一些方法🌰:
参考来自:Qt文档

方法 含义
addItem(string) 往下拉列表中添加一个项目
addItems(list) 往下拉列表中添加一个列表
clear() 清除下拉列表中的全部内容
setItemText(int,string) 设置列表中给定索引项目的值
count() 返回下拉列表中项目的数量
currentIndex() 返回当前选项在下拉列表中的索引
currentText() 返回当前选项的文字
常用信号:
信号 含义
Activated 选中一个选项时触发的信号
currentIndexChanged 选中选项发生改变时触发的信号
highlighted 当高亮的项目发生改变时触发的信号

QAbstractSlider🎚️

可以滑动的控件,提供输入一个范围内的数的类,是QSlider、QScrollBar等的基类

下面是QAbstractSlider提供的一些方法🌰:

方法 含义
value() 获得滑块的数值
setValue(int) 设置滑块的数值
setMinimum(int) 设置滑块的最小值
setMaximum(int) 设置滑块的最大值
setSingleStep(int) 设置滑块步数

下面是QAbstractSlider的一些信号🌰:
信号 含义
valueChanged 滑块数值变化触发的信号

QSlider

滑块,滑动输入数值,下面是QSlider提供的一些方法🌰:
参考来自:Qt文档

方法 含义
setTickPosition(QtWidgets.QSlider.TickPosition) 绘制滑块的刻度线
setTickInterval(int) 设置刻度线的间隔距离
QtWidgets.QSlider.TickPosition 含义
QSlider.NoTicks 不绘制任何刻度线
QSlider.TicksBothSides 在滑块两侧绘制刻度线
QSlider.TicksAbove 在滑块上方绘制刻度线
QSlider.TicksBelow 在滑块下方绘制刻度线
QSlider.TicksLeft 在滑块左侧绘制刻度线
QSlider.TicksRight 在滑块右侧绘制刻度线

QPrograssBar

进度条,显示程序(一般用于循环程序)的进度。下面是QPrograssBar提供的一些方法🌰:
参考来自:Qt文档

方法 含义
setRange(int,int) 设置进度条的范围
setValue(int) 设置进度条的值
setTextVisible(bool) 设置进度条是否显示数值
setInvertedAppearance 设置进度条是否反向
value() 获得进度条的数值
reset() 重置进度条
更改PrograssBar进度条的颜色可以在stylesheet中使用qss更改,🌰:
1
2
3
4
5
QWidgets.QPrograssBar.setStyleSheet("QProgressBar { border: 4px solid grey; "
"border-radius: 10px; background-color: #FFFFFF; text-align: center;"
"color:rgb(80,80,80);font: 15pt 'Comic Sans MS';}"
"QProgressBar::chunk {background:QLinearGradient(x1:0,y1:0,x2:2,y2:0,stop:0 rgb(47,161,202),"
"stop:1 rgb(43,220,112));}")

附:【对齐参数、掩码表格、验证器、EchoMode】

对齐参数

文本对齐样式类型
水平方向对齐:

参数 含义
Qt.AlignLeft 左对齐
Qt.AlignRight 右对齐
Qt.AlignHCenter 居中对齐
Qt.AlignJustify 分散对齐
竖直方向对齐:
参数 含义
Qt.AlignTop 向上对齐
Qt.AlignBottom 向下对齐
Qt.AlignVCenter 居中对齐

掩码表格:

掩码字符 含义
A ASCII字母字符(A-Z、a-z) 是必须输入的
a ASCII字母字符(A-Z、a-z) 是允许输入的,但不是必需输入的
N ASCII字母字符(A-Z、a-z、0-9)是必须输入的
n ASCII字母字符(A-Z、a-z、0-9)是允许输入的,但不是必需输入的
X 任何字符都是必须输入的
x 任何字符都是允许输入的,但不是必需输入的
n ASCII字母字符(A-Z、a-z、0-9)是允许输入的,但不是必需输入的
9 ASCII数字字符(0-9)是必须输入的
0 ASCII数字字符(0-9)是允许输入的,但不是必需输入的
D ASCII数字字符(1-9)是必须输入的
d ASCII数字字符(1-9)是允许输入的,但不是必需输入的
# ASCI数字字符或加减符号是允许输入的,但不是必需输入的
H 十六进制格式字符(A-F、a-f、0-9) 是必须输入的
h 十六进制格式字符(A-F、a-f、0-9) 是允许输入的,但不是必需输入的
B 二进制格式字符(0,1)是必须输入的
b 二进制格式字符(0,1)是允许输入的,但不是必需输入的
> 所有的字母字符都大写
< 所有的字母字符都小写
! 关闭大小写转换

验证器:

验证器 含义
QtGui.QIntValidator 限制输入整数
QtGui.QDoubleValidator 限制输入浮点数
QtGui.QRegexpValidator 检查输入是否符合正则表达式

EchoMode:

显示状态 含义
QLineEdit.Normal 输入时显示字符
QLineEdit.NoEcho 啥都不显示
QLineEdit.Password 显示掩码字符
QLineEdit.PasswordEchoOnEdit 在输入时显示字符,输入完显示掩码
  • 标题: PyQt控件使用
  • 作者: Arya
  • 创建于 : 2023-11-07 18:30:00
  • 更新于 : 2024-03-12 19:25:48
  • 链接: https://aryagala0.github.io/2023/11/07/PyQt/PyQt控件使用/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论