[TOC]

文本类控件

文本类控件主要用来显示或者编辑文本信息,主要有Label、LineEdit、TextEdit、SpinBox、DoubleSpinBox、LCDNumber

Label:标签控件

主要用于显示用户不能编辑的文本,标识窗体上的对象,添加描述信息,对应QLabel类

常用方法

  • 设置text文本属性

lab.setText(text)

  • 设置标签文本的对齐方式
1
2
3
4
#alignment属性:Horizontal和Vertical,水平和垂直 
#Horizontal:AlignLeft左对齐、AlignHCenter居中、AlignRight右对齐、AlignJustify两端对齐
#Vertical:AlignTop顶部对齐、AlignVCenter居中、AlignBottom底部对齐 #方法
lab.setAlignment(QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
  • 设置文本换行显示

标签宽度不足情况下,系统会默认只显示部分文字。所以需要设置标签中的文本换行显示。

1
2
3
#wordWrap属性:True和False
#方法
lab.setWordWrap(True)
  • 为标签设置超链接

直接在setText()方法中使用HTML中的标签设置超链接文本,然后将Label标签的setOpenExternalLinks()设置为True

1
2
lab.setText("<a href='https://www.bilibili.com/'>bilibili</a>") 
lab.setOpenExternalLinks(True)
  • 为标签设置图片
1
2
3
# 方法,需要有一个QPixmap对象
from PyQt5.QtGui import QPixmap
lab.setPixmap(QPixmap('test.png'))
  • 获取标签文本
1
lab.text()

LineEdit:单行文本框

常用方法

  • 设置文本框内容
1
ledit.setText(str)
  • 获取文本框内容
1
ledit.text()
  • 设置文本框浮显文字
1
ledit.setPlaceholderText(str)
  • 设置允许文本框输入字符的最大长度
1
ledit.setMaxLength()
  • 设置文本对齐方式式
1
ledit.setAlignment(Horzontal,Vartical)
  • 设置文本框只读
1
ledit.setReadOnly()
  • 使文本框得到焦点
1
ledit.setFocus()
  • 清除文本框内容
1
ledit.clear()
  • 设置文本框显示字符的模式
1
2
3
4
5
# QLineEdit.Normal: 正常显示输入的字符
# QLineEdit.NoEcho: 不显示任何输入的字符
# QLineEdit.Password: 显示与平台相关的密码掩码字符
# QLineEdit.PasswordEchoOnEdit: 在编辑时显示字符,失去焦点后显示掩码
ledit.setEchoMode()
  • 设置文本框验证器
1
2
3
4
# QIntValidator: 限制输入整数
# QDoubleValidator: 限制输入小数
# QRegExpValidator: 检查输入是否符合设置的正则表达式
ledit.setValidator()
  • 设置掩码

掩码通常由掩码字符和分隔符组成,后面可以跟一个分号和空白字符,空白字符在编辑完成后会从文本框中删除

日期掩码:0000-00-00;

时间掩码:00:00:00;

序列号掩码:>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#

1
ledit.setInputMask()

信号

  • 当更改文本框中内容时发射该信号
1
ledit.textChanged.connect(槽函数)
  • 当文本框中的内容编辑结束时发射该信号,以按下Enter为编辑结束标志
1
ledit.editingFinished.connect(槽函数)

TextEdit:多行文本框

常用方法

  • 设置文本内容
1
tedit.setPlainText(str)
  • 获取文本内容
1
tedit.toPlainText()
  • 设置文本颜色
1
2
tedit.setTextColor(QtGui.QColor(255,0,0))
#需要一个QColor对象
  • 设置文本背景颜色
1
2
tedit.setTextBackgroundColor(QtGui.QColor(255,0,0))
#需要一个QColor对象
  • 设置HTML文档内容
1
tedit.setHtml()
  • 获取HTML文档内容
1
tedit.toHtml()
  • 设置自动换行
1
tedit.wordWrapMode()
  • 清除所有内容
1
tedit.clear()

按钮类控件

按钮类控件主要用来执行一些命令操作,主要有PushButton、ToolButton、CommandLinkButton、RadioButton和CheckBox

PushButton:按钮


定义

button = QPushButton('&Download', self)

img

常用方法

  • 设置按钮所显示的文本
1
pbtn.setText(str)
  • 获取按钮所显示的文本
1
pbtn.text()
  • 设置按钮上的图标、设置按钮图标大小
1
2
3
4
5
from PySide2.QtCore import Qt,QSize 
from PySide2.QtGui import QIcon

pbtn.setIcon(QtGui.QIcon('icon_path'))
pbtn.setIconSize(Qt.Core.QSize(int width,int height))
  • 设置按钮是否可用
1
2
pbtn.setEnabled(False)
# 不可用
  • 设置按钮的快捷键
1
2
pbtn.setShortcut()
# 参数可以设置为键盘中的按键或快捷键,例如'Alt+0'

信号

  • 信号: 被点击
1
pbtn.clicked.connect(槽函数)

RadioButton:单选按钮


对应QRadioButton类

常用方法

  • 设置单选按钮显示的文本
1
rbtn.setText(str)
  • 获取单选按钮显示的文本
1
rbtn.text()
  • 设置单选按钮是否为选中状态
1
2
3
rbtn.setChecked(True)
# 或者
rbtn.setCheckable(False)
  • 查看单选按钮是否为选中状态
1
rbtn.isChecked()

信号

  • 单击单选按钮
1
rbtn.clicked.connect()
  • 在单选按钮状态改变时
1
2
# 常用
rbtn.toggled.connect()

进度条:ProgressBar

对应QProgressBar类

常用方法

  • 设置进度条的值
1
2
3
4
5
6
7
8
# 设置进度条的最小值
pgbar.setMinimum(int num)
# 设置进度条的最大值
pgbar.setMaximum()
# 设置进度条的取值范围,相当于上两组合
pgbar.setRange()
# 设置进度条的当前值
pgbar.setValue()
  • 设置进度条的文字填充格式
1
2
3
4
# %p%:显示完成的百分比
# %v:显示当前的进度值
# %m:显示总的步长值
pgbar.setFormat()
  • 设置进度条的布局方向
1
2
3
4
# Qt.LeftToRight: 从左到右
# Qt.RightToLeft: 从右到左
# Qt.LayoutDirectionAuto: 跟随布局方向自动调整
pgbar.setLayoutDirection()
  • 设置对齐方式

img

  • 设置进度条的显示方向
1
2
3
# Qt.Horizontal: 水平方向
# Qt.Vertical: 垂直方向
pgbar.setOrientation()
  • 设置进度条是否以反方向显示进度
1
pgbar.setInvertedAppearance()
  • 设置进度条的文本显示方向
1
2
3
# QProgressBar.TopToBottom: 从上到下
# QProgressBar.BottomToTop: 从下到上
pgbar.setTextDirection()
  • 对进度条的属性进行设置
1
2
# 可以是任何属性,如self.progressBar.setProperty("value",24)
pgbar.setProperty()
  • 获取进度条的值
1
2
3
4
5
6
# 获取最大值
pgbar.minimum()
# 获取最小值
pgbar.maximum()
# 获取当前值
pgbar.value()

信号

  • 在进度条的值发生改变时
1
pgbar.valueChanged.connect()

示例

Image [3]

对话框类

常用对话框有QMessageBox、QFileDialog、QInputDialog、QFontDialog和QColorDialog

QMessageBox:对话框


对话框种类

QMessageBox.information() 消息对话框
QMessageBox.question() 问答对话框
QMessageBox.warning() 警告对话框
QMessageBox.critical() 错误对话框
QMessageBox.about() 关于对话框

使用方法:以消息对话框为例

1
2
3
4
5
6
QMessageBox.information(QWidget, 'Title', 'Content', buttons, defaultbutton)
# QWidget: self或窗口对象,表示该对话框所属窗口
# Title: 字符串,表示对话框的标题
# Content: 字符串,表示对话框中的提示内容
# button: 对话框上要添加的按钮,多个按钮之间用“|”来连接,按钮种类见下表
# defaultbutton: 默认选中的按钮

img

QMessageBox.about()关于对话框中不能指定按钮。

QMessageBox.about(QWidget, ‘Title’, ‘Content’)

QFileDialog: 文件对话框


该类继承自QDialog类,它允许用户选择文件或者文件夹,也允许用户遍历文件系统,以便选择一个或多个文件或者文件夹。

常用方法

  • 获取一个、多个打开文件的文件名
1
2
3
dir = QFileDialog()
dir.getOpenFileName()
dir.getOpenFileNames()
  • 获取保存的文件名
1
dir.getSaveFileName()
  • 获取一个打开的文件夹
1
dir.getExistingDirectory()
  • 设置接收模式
1
2
3
dir.setAcceptMode()
# QFileDialog.AcceptOpen: 设置文件对话框为打开模式
# QFileDialog.AcceptSave: 设置文件对话框为保存模式
  • 设置文件对话框中的文件名的默认后缀名
1
dir.setDefaultSuffix()
  • 设置可以选择的文件类型
1
2
3
4
5
6
dir.setFileMode()
# QFileDialog.AnyFile: 任意文件(无论是否存在)
# QFileDialog.ExistingFile: 已存在的文件
# QFileDialog.ExistingFiles: 已存在的多个文件
# QFileDialog.Directory: 文件夹
# QFileDialog.DirectoryOnly: 文件夹(选择时只能选中文件夹)
  • 设置文件对话框默认打开位置
1
dir.setDirectory()
  • 设置名称过滤器
1
2
3
dir.setNameFilter()
# 多个类型的过滤器之间用两个分号分割,(*.*);;(*.py)
# 一个过滤器中如果有多种个数,用空格分割,(*.jpg *.png *.bmp)
  • 设置显示模式
1
2
3
dir.setViewMode()
# QFileDialog.Detail: 显示文件详细信息,包括文件名、大小、日期
# QFileDialog.List: 以列表形式显示文件名
  • 获取选择的一个、多个文件或文件夹名字
1
2
dir.selectedFile()
dir.selectedFiles()

else

QtCore 模块是非 GUI 的核心库。这个模块用来处理时间、文件、目录、各种类型的数据、流(stream)、URLs,mime 类型、线程和进程。 QtGui 有窗口系统集成、事件处理、2D图形,基本图像、字体、文本的类。 QtWidgets 有创建经典风格的用户界面的类。

QtDBus 是使用 D-Bus 处理 IPC 通讯的类。QtNetwork 是网络变成类,这些类使网络编程变得更容易,可移植性也更好,方便了 TCP/IP 和 UDP 服务端和客户端编程。 QtHelp 包含了创建、查看和搜索文档的类。

QtXml 包含了处理 XML 文件的类,实现了 SAX 和 DOM API。QtSvg 提供了显示 SVG 的类,可缩放矢量图形(SVG)是一种描述二维图像和图像应用的 XML 语言。QtSql 模块提供了数据库的类,QtTest 提供了可以对 PyQt6 应用进行单元测试的工具。