当前位置: 首页 > article >正文

【Python-GUI图形化界面-PyQt5模块(4)】——QPushButton核心模块

QLabel 用于显示文本或图像。

用于显示文本或图像。

QLabel 是 PyQt 中用于显示文本或图像的控件,可以用于创建标签、显示图像、显示HTML格式的文本或其他简单的显示元素。常用来描述其他控件的功能或用作显示静态内容。QLabel 非常灵活,可以嵌入在各种 PyQt 界面中,例如按钮旁边的提示文本、表单中的字段标签等。

QLabel()方法签名:

QLabel(parent: Optional[QWidget] = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = ...)

形参列表:

形参名

类型:

参数解释

parent

Optional[QWidget]

表示 QLabel 的父控件,可以指定为父窗口或父布局控件。如果不传入父控件参数,则 QLabel 独立显示。

flags

Union[Qt.WindowFlags, Qt.WindowType]

表示 QLabel 的窗口标志属性,可以用来控制 QLabel 的显示属性,例如 Qt.WindowType.ToolTip 可将 QLabel 显示为提示框的形式。

基本示例:

示例代码:

以下是一个简单的 QLabel 使用示例,显示纯文本内容:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
import sys

# 初始化应用程序
app = QApplication(sys.argv)

# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle('QLabel Example')
main_window.resize(400, 300)

# 创建 QLabel 控件,并设置文本
label = QLabel('Hello, PyQt!', main_window)
label.setGeometry(100, 100, 200, 50)  # 设置 QLabel 位置和大小

# 显示主窗口
main_window.show()

# 运行应用程序主循环
sys.exit(app.exec_())
解释:

·  创建了一个 QLabel 对象 label,并在主窗口中显示。

·  使用 setGeometry() 设置了标签的位置和大小。

·  label 以静态文本的形式展示 "Hello, PyQt!"。

拓展示例:

示例代码:

QLabel 不仅可以显示文本,还可以用来显示图像,以下示例展示如何使用 setPixmap() 方法来在标签中显示图片:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt5.QtGui import QPixmap
import sys

# 初始化应用程序
app = QApplication(sys.argv)

# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle('QLabel Image Example')
main_window.resize(500, 400)

# 创建 QLabel 控件
image_label = QLabel(main_window)
image_label.setGeometry(50, 50, 400, 300)  # 设置 QLabel 位置和大小

# 设置图片
image_label.setPixmap(QPixmap('image.png'))  # 使用本地图片 'image.png'

# 显示主窗口
main_window.show()

# 运行应用程序主循环
sys.exit(app.exec_())
解释:

·  使用 QPixmap('image.png') 加载本地图片文件。

·  image_label.setPixmap() 将加载的图片设置到标签中进行显示。

  图像会根据 QLabel 的大小自动缩放显示。

QLabel 常用方法汇总

·setText(text: str):设置显示的文本内容。

·setPixmap(pixmap: QPixmap):将 QPixmap 对象设置为图像标签。

·setAlignment(alignment: Qt.Alignment):设置文本或图像的对齐方式,如 Qt.AlignCenter

·setWordWrap(on: bool):设置是否自动换行显示长文本。

·setStyleSheet(stylesheet: str):通过样式表设置标签的外观,如字体颜色、背景颜色等。

拓展应用

·表单标签:为输入框、按钮或其他控件提供文本描述。

·状态提示:动态更新标签文本内容,显示程序当前状态或提示信息。

·图片展示:在窗口中嵌入小型图片或标志。

·富文本格式:用于显示复杂格式的文本,如标题、链接、段落等。

总结:

·  QLabel 是 PyQt 中用于显示文本和图像的基本控件,适合用于创建标签、状态提示、图像展示等场景。

·  支持设置纯文本、HTML 格式文本及图像等。

·  可以通过继承 QLabel 实现自定义交互功能,例如响应鼠标点击事件。


setText()设置标签的文本。

设置标签的文本。

setText() 是 PyQt 中常用的方法之一,用于设置控件(如 QLabel, QPushButton, QLineEdit 等)显示的文本内容。它可以动态更改控件上的文本,使用户界面的元素内容能够根据交互或程序逻辑的变化而更新。

setText()方法签名

setText(text: str)

形参列表:

形参名

类型:

参数解释

text

Str

需要显示在控件上的字符串内容,可以是纯文本或带有 HTML 格式的字符串(对于 QLabel 等支持 HTML 的控件)。

基本示例:

示例代码:

以下是一个使用 setText() 的简单示例,在 QLabel 中动态设置文本内容:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
import sys

# 初始化应用程序
app = QApplication(sys.argv)

# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle('setText Example')
main_window.resize(400, 300)

# 创建 QLabel 控件
label = QLabel('Initial Text', main_window)
label.setGeometry(100, 100, 200, 50)  # 设置 QLabel 位置和大小

# 更改 QLabel 文本内容
label.setText('Updated Text')

# 显示主窗口
main_window.show()

# 运行应用程序主循环
sys.exit(app.exec_())
解释

label.setText('Updated Text') 将标签的文本内容从 "Initial Text" 更新为 "Updated Text"。

这种方法通常用于在交互中根据条件更改文本内容,如按钮点击、输入框更新等场景。

拓展示例:

示例代码:

以下示例展示如何在按钮被点击时动态更新其文本内容:

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
import sys

# 初始化应用程序
app = QApplication(sys.argv)

# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle('Button setText Example')
main_window.resize(400, 300)

# 创建按钮控件,并设置初始文本
button = QPushButton('Click Me!', main_window)
button.setGeometry(100, 100, 200, 50)  # 设置按钮位置和大小

# 定义槽函数
def change_button_text():
    button.setText('Text Changed!')  # 更新按钮文本

# 连接按钮点击信号到槽函数
button.clicked.connect(change_button_text)

# 显示主窗口
main_window.show()

# 运行应用程序主循环
sys.exit(app.exec_())
解释
  • 初始时按钮显示 "Click Me!" 。

QLabel 和 QPushButton 的区别

尽管 QLabelQPushButton 都可以通过 setText() 方法设置文本,但它们的使用场景不同:

  • QLabel
    • 主要用于显示静态或动态更新的文本,支持富文本(HTML)。
    • 不具备交互性(但可通过自定义子类添加交互)。
  • QPushButton
    • 用于创建带有交互行为的按钮,点击时通常会触发相应的槽函数。
    • 通常用于提交、导航等交互操作。

拓展应用

  1. 文本内容不显示或显示不全:
    • 确保控件的大小(setGeometry)足够显示完整的文本。
    • 可以使用 adjustSize() 方法自动调整控件大小以适应内容。
  2. HTML 格式文本未解析:
    • QLabel 支持 HTML 格式的文本显示,其他控件(如 QPushButton, QLineEdit)不支持。
  3. 动态更新文本后未刷新:
    • 在某些复杂的 GUI 应用场景中,可能需要调用 repaint()update() 方法来强制刷新控件显示内容。

总结

  • setText() 是 PyQt 中用于设置控件文本的常用方法,适用于 QLabel, QPushButton, QLineEdit 等多种控件。
  • 可以通过该方法动态更新控件的显示内容,如根据用户交互或程序状态改变文本内容。
  • 对于支持 HTML 的控件(如 QLabel),可以使用 HTML 格式化文本来实现更复杂的文本样式。

setPixmap(pixmap):设置标签的图像。

设置标签的图像。

setPixmap() 是 PyQt 中用于设置控件(如 QLabel)显示图片的常用方法。该方法允许在标签控件中嵌入图片,并控制图片的显示效果。通常用于在 GUI 界面中嵌入图像元素,如图标、照片、背景图片等。

setPixma()方法签名

setPixmap(pixmap: QPixmap)

形参列表

形参名

类型:

参数解释

pixmap

QPixmap

QPixmap 对象,表示要显示在标签控件中的图片。可以使用 QPixmap 加载本地图片文件或通过其他图形操作生成。QPixmap 支持多种格式(如 PNG、JPG、BMP 等)。

基本示例:显示简单图片

示例代码:

以下是一个使用 setPixmap() 方法在 QLabel 中显示图片的简单示例:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt5.QtGui import QPixmap
import sys

# 初始化应用程序
app = QApplication(sys.argv)

# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle('setPixmap Example')
main_window.resize(400, 300)

# 创建 QLabel 控件
label = QLabel(main_window)
label.setGeometry(50, 50, 300, 200)  # 设置 QLabel 位置和大小

# 设置 QLabel 显示图片
pixmap = QPixmap('image.png')  # 加载本地图片文件
label.setPixmap(pixmap)        # 使用 setPixmap 显示图片

# 显示主窗口
main_window.show()

# 运行应用程序主循环
sys.exit(app.exec_())
解释
  • pixmap = QPixmap('image.png') 创建了一个 QPixmap 对象,并加载本地的 image.png 文件。
  • 通过 label.setPixmap(pixmap) 将加载的图片显示在 QLabel 中。
  • 这种方式适用于将静态图片嵌入到 GUI 界面中,如用作图标、背景图片、显示动态变化的图像等。

拓展示例:使用缩放功能的 setPixmap()

示例代码:

有时图片的大小可能与标签控件的大小不一致。此时可以使用 scaled() 方法来对图片进行缩放:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt5.QtGui import QPixmap
import sys

# 初始化应用程序
app = QApplication(sys.argv)

# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle('Scaled Pixmap Example')
main_window.resize(400, 300)

# 创建 QLabel 控件
label = QLabel(main_window)
label.setGeometry(50, 50, 300, 200)

# 加载图片并进行缩放
pixmap = QPixmap('image.png')
scaled_pixmap = pixmap.scaled(label.width(), label.height())  # 缩放到 QLabel 的大小
label.setPixmap(scaled_pixmap)  # 使用缩放后的 pixmap

# 显示主窗口
main_window.show()

# 运行应用程序主循环
sys.exit(app.exec_())
解释
  • 使用 pixmap.scaled() 方法将原始图片缩放到 QLabel 控件的大小,确保图片不会超出标签边界或显示失真。
  • label.setPixmap(scaled_pixmap) 使用经过缩放处理的图片。

注意: 缩放时可能会导致图片质量下降,可通过设置 scaled() 方法的 aspectRatioMode 参数来控制缩放时的长宽比例。

常见问题及注意事项

  1. 图片加载失败:
    • 确保图像文件路径正确,并使用支持的图像格式(如 .png, .jpg)。
    • 可以使用 QPixmapisNull() 方法检查图片是否加载成功。
  2. 图片显示变形:
    • 使用 scaled() 方法缩放图片时,应保持长宽比例。
    • 可以使用 aspectRatioMode 参数指定缩放模式,如 Qt.KeepAspectRatio
  3. 控件尺寸与图片尺寸不匹配:
    • 如果控件大小比图片小,可以使用 label.adjustSize() 调整控件大小以适应图片。

拓展应用

  • 图标或状态显示:可以根据状态动态更新标签中的图标。
  • 图像查看器:通过 QLabel 创建简单的图像查看器或图片展示。
  • 背景图显示:在 QLabel 中嵌入背景图片,结合样式表实现透明效果或复杂的 GUI 布局。

总结

  • setPixmap() 是 PyQt 中用于设置 QLabel 控件图片内容的方法,适合用于各种图像展示场景。
  • 可以结合 scaled() 方法实现图片缩放,结合样式表实现透明效果,或者动态更新图片内容以响应用户交互。
  • 在实际应用中,setPixmap() 常用于状态图标显示、图像查看器或按钮图标的动态变化。

setAlignment(alignment):设置文本的对齐方式,如居中、左对齐、右对齐。

setAlignment(alignment):设置文本的对齐方式,如居中、左对齐、右对齐。

setAlignment() 是 PyQt 中用于设置控件(如 QLabel, QLineEdit 等)内容对齐方式的常用方法。通过该方法可以指定控件中文本或图像的水平和垂直对齐方式,如居中对齐、左对齐、右对齐或顶部对齐等。

该方法特别适合用于界面布局调整时,让文本或图片在控件内部按照指定位置进行排列。常用于对齐标签(QLabel)、输入框(QLineEdit)或其他支持文本和图片的控件。

setAlignment()方法签名

setAlignment(alignment: Qt.Alignment)

形参列表:

形参名

类型:

参数解释

alignment

Qt.Alignment

对齐方式:

 ·Qt.AlignLeft:左对齐

·Qt.AlignRight:右对齐

·Qt.AlignHCenter:水平居中对齐

·Qt.AlignTop:上对齐

·Qt.AlignBottom:下对齐

·Qt.AlignVCenter:垂直居中

·可以通过按位或运算符 | 组合多个对齐方式,如 Qt.AlignHCenter | Qt.AlignVCenter 表示水平和垂直居中对齐。

基本示例:

示例代码:

以下是一个在 QLabel 中使用 setAlignment() 设置对齐方式的简单示例:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt5.QtCore import Qt
import sys

# 初始化应用程序
app = QApplication(sys.argv)

# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle('setAlignment Example')
main_window.resize(400, 300)

# 创建 QLabel 控件,并设置初始文本
label = QLabel('Hello, PyQt!', main_window)
label.setGeometry(50, 50, 300, 200)  # 设置 QLabel 位置和大小

# 设置 QLabel 的对齐方式为水平和垂直居中
label.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)

# 显示主窗口
main_window.show()

# 运行应用程序主循环
sys.exit(app.exec_())
解释:

·  label.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) 设置 QLabel 的内容为水平居中(Qt.AlignHCenter)和垂直居中(Qt.AlignVCenter)对齐。

·  Qt.AlignHCenter 和 Qt.AlignVCenter 使用按位或运算符 | 组合,实现同时指定水平和垂直方向的对齐方式。

拓展示例:

示例代码:

以下示例展示如何使用不同的 setAlignment() 参数设置标签文本的对齐方式:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt5.QtCore import Qt
import sys

# 初始化应用程序
app = QApplication(sys.argv)

# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle('Alignment Example')
main_window.resize(500, 400)

# 创建不同的 QLabel 控件,并设置不同的对齐方式
label_top_left = QLabel('Top Left', main_window)
label_top_left.setGeometry(50, 50, 150, 50)
label_top_left.setAlignment(Qt.AlignLeft | Qt.AlignTop)

label_bottom_right = QLabel('Bottom Right', main_window)
label_bottom_right.setGeometry(300, 250, 150, 50)
label_bottom_right.setAlignment(Qt.AlignRight | Qt.AlignBottom)

label_center = QLabel('Center', main_window)
label_center.setGeometry(175, 150, 150, 50)
label_center.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)

# 显示主窗口
main_window.show()

# 运行应用程序主循环
sys.exit(app.exec_())

解释:

·  Qt.AlignLeft | Qt.AlignTop:将 label_top_left 的文本设置为左上对齐。

·  Qt.AlignRight | Qt.AlignBottom:将 label_bottom_right 的文本设置为右下对齐。

·  Qt.AlignHCenter | Qt.AlignVCenter:将 label_center 的文本设置为水平和垂直居中对齐。

·  这种方式可以在界面布局中灵活指定各个控件的内容对齐方式。

拓展应用

  1. 对齐方式不起作用:
    • 确保目标控件支持文本或图片对齐属性,如 QLabelQLineEdit 等。
    • 检查 setAlignment() 参数是否设置正确,可以使用 Qt 中的各类对齐枚举值进行组合。
  2. 图片或文本未居中:
    • 确保控件大小足够大,否则可能会导致对齐方式未完全生效。
    • 对于图片,可以考虑先使用 QPixmapscaled() 方法调整大小。
  3. 按位或运算符 | 的使用:
    • 水平和垂直对齐方式必须使用按位或运算符 | 组合,确保同时设置水平和垂直方向。

总结

  • setAlignment() 是 PyQt 中常用于设置控件内容(文本或图像)对齐方式的方法。
  • 常用的对齐方式包括水平居中(Qt.AlignHCenter)、垂直居中(Qt.AlignVCenter)、左对齐(Qt.AlignLeft)和右对齐(Qt.AlignRight)等。
  • 适用于需要精确控制控件内容布局的场景,如表单输入对齐、状态标签内容居中等。
  • 通过动态设置 setAlignment(),可以灵活地根据用户交互调整界面布局和控件内容显示方式。

setWordWrap(True):启用自动换行

启用自动换行。

setWordWrap() 是 PyQt 中 QLabel 控件用于设置文本是否自动换行的常用方法。该方法主要作用是在标签文本过长时,根据控件的宽度自动换行,确保文本能够完整显示在标签区域内,而不会被截断。

通过启用自动换行,可以在界面设计中更好地布局长文本内容,避免超出控件边界的文字无法显示或显示不全的情况。

setWordWrap()方法签名

setWordWrap(on bool)

形参列表:

形参名

类型:

参数解释

On

Bool布尔值参数,指定是否启用文本的自动换行功能。

·  True:启用文本自动换行,根据控件的宽度进行折行。

·  False:禁用文本自动换行(默认行为)。如果文本过长,则显示在同一行中,超出部分不会显示。

基本示例:

示例代码:

以下是一个使用 setWordWrap(True) 让标签中的长文本根据控件宽度自动换行的简单示例:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
import sys

# 初始化应用程序
app = QApplication(sys.argv)

# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle('setWordWrap Example')
main_window.resize(400, 300)

# 创建 QLabel 控件,并设置长文本
label = QLabel('This is a very long text that will be automatically wrapped to fit the width of the label. '
               'It demonstrates the use of the setWordWrap method in PyQt.', main_window)
label.setGeometry(50, 50, 300, 100)  # 设置 QLabel 的位置和大小

# 启用自动换行功能
label.setWordWrap(True)

# 显示主窗口
main_window.show()

# 运行应用程序主循环
sys.exit(app.exec_())
解释:
  • label.setWordWrap(True) 启用 QLabel 的文本自动换行功能。
  • 长文本在控件宽度不足时自动折行,确保所有文字能够在指定的 QLabel 宽度内完整显示。

拓展示例:

示例代码:

默认情况下,QLabel 不会自动换行。当文本内容过长时,如果未启用 setWordWrap(True),超出控件宽度的文字将无法显示:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
import sys

# 初始化应用程序
app = QApplication(sys.argv)

# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle('No Word Wrap Example')
main_window.resize(400, 300)

# 创建 QLabel 控件,并设置长文本
label = QLabel('This is a very long text that will not wrap automatically unless word wrap is enabled. '
               'Only the part fitting within the label width will be visible.', main_window)
label.setGeometry(50, 50, 300, 50)  # 设置 QLabel 的位置和大小

# 禁用自动换行(默认行为)
label.setWordWrap(False)

# 显示主窗口
main_window.show()

# 运行应用程序主循环
sys.exit(app.exec_())

解释:

·  label.setWordWrap(False) 禁用了自动换行功能(默认设置)。

·  当文本超过 QLabel 的宽度时,超出部分不会被显示,造成文本内容显示不全。


http://www.kler.cn/news/358276.html

相关文章:

  • 大数据新视界 --大数据大厂之 Dask:分布式大数据计算的黑马
  • Http 代理穿透
  • 在线课程管理系统(系统的基础功能,如教师上传课程资料、布置作业,学生提交作业和查看成绩等。)
  • 清华计算几何--2D Polygon的三角剖分(triangulation)
  • C++ 中的虚函数表(vtable)与继承:单继承与多继承的分析
  • 智简魔方业务管理系统v10 好用的IDC业务管理软件
  • ZigZagOnParabolic,MetaTrader 免费公式!(指标教程)
  • 【力扣打卡系列】滑动窗口与双指针(乘积小于K的子数组)
  • Spring boot 控制台输出大佛
  • QT 对话框
  • [k8s理论知识]3.docker基础(二)隔离技术
  • 百度SEO前10关键词排名波动跟用户行为反馈有很大关系
  • UG NX12.0建模入门笔记:1.2 鼠标的基本操作
  • 【VUE小型网站开发】初始环境搭建
  • RNN,LSTM,GRU的区别和联系? RNN的梯度消失问题?如何解决?
  • Widget结构(一)
  • 基于SpringBoot+Vue的厨艺交流系统的设计与实现(源码+定制开发)厨艺知识与美食交流系统开发、在线厨艺分享与交流平台开发、智能厨艺交流与分享系统开发
  • 【文心智能体 | AI大师工坊】如何使用智能体插件,完成一款购物类智能体的开发,来体验一下我的智能体『科技君Tom』
  • 爬虫实现验证码登录古诗文网【爬虫学习day.02】
  • 【高等数学】无穷级数