前言✨
- “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) |
设置图片 |
列表框,是一个显示列表的控件。下面是它的一些方法🌰:
方法 |
含义 |
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) |
当点击该项时触发信号 |
列表项目类,是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) |
设置提示文字 |
滑块。给大块的控件提供可滑动视图。(有待研究)
下面是QListWidgetItem中的方法🌰:
参考来自:Qt文档
方法 |
含义 |
setWidget(QWidget) |
设置需要进行滑动的控件,需要在调用这个函数之前给控件添加布局,否则控件会看不见。 |
setWidgetResizable(True) |
设置控件是否可自适应大小,默认为False,有时候控件看不见也是因为这个选项没有设置为True。 |
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继承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(单选框)继承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 |
在输入时显示字符,输入完显示掩码 |