Python PyQt5气泡提示与标签控件详解
本文介绍如何在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标签相关内容,请搜索本站往期文章或继续浏览后续系列。感谢大家的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













