Python PyQt5气泡提示与标签控件详解

周叙
周叙
发布时间:2026-10-13| 4人浏览过
原创

本文介绍如何在Python PyQt5中实现气泡提示与标签控件。通过setToolTip方法设置全局或局部气泡,详解QLabel的文本显示、字体设置及图片嵌入。重点强调标签内容必须为字符串类型,并对比不同编辑器下的运行表现,帮助开发者避免常见类型错误。

本期内容继续更新GUI编程教程。

气泡提示的基本实现

今天主要讲解气泡提示功能,效果如图所示。

图中显示的“这是一个气泡提示”即为气泡提示效果。部分读者可能会觉得这很简单,甚至质疑这是否是操作系统自带的功能。这个问题在我初学编程时也曾存在,例如最初学习Scratch制作《植物大战僵尸》时,误以为太阳掉落特效是系统自带无需编码,后来才发现需要利用随机数等逻辑实现。此处不再赘述过往经历。

接下来展示相关代码实现。


import sys
from PyQt5.QtWidgets import QWidget, QToolTip, QApplication
from PyQt5.QtGui import QFont

class Example(QWidget):
  def __init__(self):
    super().__init__()
    self.settings()

  def settings(self):
    self.setGeometry(300, 300, 400, 300)
    self.setWindowTitle('啥都行')
    self.setToolTip('气泡提示')  #气泡提示
    QToolTip.setFont(QFont('microsoft Yahei', 10)) #字体格式
    self.show()

if __name__ == '__main__':
  app = QApplication(sys.argv)
  ex = Example()
  sys.exit(app.exec_())

从代码可以看出,我们使用setToolTip方法创建了气泡提示。需要注意的是,此处调用的是self.setToolTip,这意味着气泡提示将在整个界面窗口内生效,而不仅仅局限于某个特定文字或按钮(局部应用将在后续章节讲解)。此外,代码还涉及字体设置,其中包含两个关键参数:字体名称与字号大小。

前文提到了标签控件,本节也将对此进行讲解。至于按钮控件,由于其实现逻辑较为复杂,将在下一期教程中详细展开。

标签控件的气泡应用

以下是具体的代码示例。


import sys
from PyQt5.QtWidgets import QWidget, QLabel, QApplication
from PyQt5.QtGui import QPixmap
class Example(QWidget):
  def __init__(self):
    super().__init__()
    self.settings()

  def settings(self):
    self.setGeometry(300, 300, 300, 200)
    self.setWindowTitle('啥都行')
    self.a = QLabel(self)
    self.a.setToolTip('气泡提示')
    self.a.setText('关注一下吧!')
    self.a.move(50,50)
    print(self.a.text())
    self.show()

if __name__ == '__main__':
  app = QApplication(sys.argv)
  ex = Example()
  sys.exit(app.exec_())

请注意,此时的气泡提示仅会在“关注一下吧”标签区域显示,界面其他位置无法触发该提示。部分读者可能不清楚如何触发气泡提示:只需将鼠标光标悬停在标签上方,稍作等待即可看到提示框出现。

QLabel对象属性与类型

上述代码中的QLabel即为标签控件,同样支持字体设置(此处未作展示)。调用self.a.text()可获取标签内的文本内容;若直接打印self.a对象,输出结果如下: <PyQt5.QtWidgets.QLabel object at 0x053A4300> 其中的0x053A4300是程序每次运行时分配给变量或对象的唯一标识符(ID),类似于个人的身份证号码。

若要查看self.a的数据类型,可执行以下操作: <class ‘PyQt5.QtWidgets.QLabel'>

标签内容类型限制与注意事项

请大家务必注意,这一点至关重要: 标签的内容必须且只能是字符串类型!!!。熟悉我往期博客的读者可能注意到,除QQ相关部分外,我从未对字体进行加粗处理。之所以如此强调,是因为存在以下典型案例:


import sys
from PyQt5.QtWidgets import QWidget, QLabel, QApplication,QPushButton
class Example(QWidget):
  def __init__(self):
    super().__init__()
    self.initUI()

  def initUI(self):
    self.setGeometry(300, 300, 300, 200)
    self.setWindowTitle('QLabel标签')
    self.a = QLabel(self)
    self.a.setText('变数字')
    self.a.move(50,50)
    self.b = QPushButton('确定',self)
    self.b.clicked.connect(self.buttonClicked)
    self.b.move(100,100)
    self.show()

  def buttonClicked(self):
    self.a.setText('123')

if __name__ == '__main__':
  app = QApplication(sys.argv)
  ex = Example()
  sys.exit(app.exec_())

该示例涉及按钮操作,具体细节无需深究,下期将专门讲解。其大致目标是:点击按钮后,标签内容将更新为其他值。

若在PyCharm环境中运行,点击按钮后的表现如下:


理论上,若程序运行成功,预期输出应为0,但实际输出为1。尽管未报错,这种差异值得注意。

若使用Sublime Text3编辑器:


则完全无法察觉任何错误信息。因此,在此再次郑重强调: 标签的内容只能是字符串!!!。

标签位置与图片显示

继续讲解。move方法用于将对象移动至界面的指定位置,单位为像素。标签控件同样支持显示GIF动画或静态图片。若需显示GIF,需使用QMovie类(建议读者自行搜索相关资料,此处省略具体实现)。因此,本节仅介绍静态图片的显示方法。


import sys
from PyQt5.QtWidgets import QWidget, QLabel, QApplication
from PyQt5.QtGui import QPixmap
class Example(QWidget):
  def __init__(self):
    super().__init__()
    self.initUI()

  def initUI(self):
    self.setGeometry(300, 300, 300, 200)
    self.setWindowTitle('QLabel标签')
    self.a = QLabel(self)
    self.a.setToolTip('气泡提示')
    self.a.move(50,50)
    print(self.a.text())
    b = QLabel(self)
    b.setPixmap(QPixmap('图片名字'))
    b.move(100,100)
    self.show()

if __name__ == '__main__':
  app = QApplication(sys.argv)
  ex = Example()
  sys.exit(app.exec_())

至此,关于Python气泡提示与标签的实现教程已结束。如需了解更多Python标签相关内容,请搜索本站往期文章或继续浏览后续系列。感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。