🌟想系统化学习 GUI 编程?看看这个:[Python GUI 编程] PySide & PyQt - 学习手册-CSDN博客
0x01:QWidget 控件信息提示 — 状态提示
0x0101:状态栏基础 — QMainWindow
”状态提示“ 需要展示在状态栏上,但我们之前介绍的 QWidget 是一个纯粹的画布,其上根本没有状态栏这个控件,所以在介绍 ”状态提示“ 之前,我们需要导入一个新的类,即 QMainWindow,QMainWindow 本质只是对 QWidget 的一个封装:
如上,可以发现,QMainWindow 只是在 QWidget 的基础上给其添加了标题栏与状态栏而已。
1. 状态栏 — 懒加载?
QMainWindow 的状态栏采用了 ”懒加载“ 模式,即只有在调用它时,它才会展示,看下面这两个对比示例,第一个是未使用状态栏的,第二个是手动加载状态栏的:
import sys
from PyQt5.Qt import *
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 创建窗口控件
window = QMainWindow()
# window.statusBar()
# 3. 显示窗口
window.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())
import sys
from PyQt5.Qt import *
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 创建窗口控件
window = QMainWindow()
window.statusBar()
# 3. 显示窗口
window.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())
0x0102:setStatusTip(str) & statusTip()
QWidget 的 setStatusTip(str)
可以设置状态栏显示的内容,当我们鼠标悬停在指定控件上时,状态栏就会显示对应的内容;statusTip()
则可以获取状态栏中的内容:
import sys
from PyQt5.Qt import *
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 创建窗口控件
window = QMainWindow()
window.statusBar() # 启用状态栏
window.setStatusTip("Welcom To PyQt5")
print("状态栏中的内容为: ", window.statusTip())
# 3. 显示窗口
window.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())
0x02:QWidget 控件消息提示 — 工具提示
0x0201:setToolTip(str) & toolTip()
QWidget 的 setToolTip(str)
能在我们鼠标悬停在指定控件上时,在控件的旁边展示提示内容;toolTip()
则能获取对应控件的提示内容:
import sys
from PyQt5.Qt import *
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 创建窗口控件
window = QMainWindow()
window.resize(600, 400)
label = QLabel(window)
label.setText("Hello PyQt5")
label.resize(200, 100)
label.setToolTip("这是一个标签")
print("Label 的提示信息:", label.toolTip())
# 3. 显示窗口
window.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())
0x0202:setToolTipDuration(msec) & toolTipDuration()
setToolTipDuration(msec)
能设置当鼠标悬停时,提示信息展示的时长(这个感觉默认的就挺好); toolTipDuration()
则能获得这个时长:
import sys
from PyQt5.Qt import *
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 创建窗口控件
window = QMainWindow()
window.resize(600, 400)
label = QLabel(window)
label.setText("Hello PyQt5")
label.resize(200, 100)
label.setToolTip("这是一个标签")
print("Label 的提示信息:", label.toolTip())
label.setToolTipDuration(1000) # 设置提示信息的持续时间为1秒
print("Label 的提示信息持续时间:", label.toolTipDuration())
# 3. 显示窗口
window.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())
0x03:QWidget 控件消息提示 — 作用提示
0x0301:作用提示基础 — 添加 ”这是啥“ 按钮
”作用提示“,即显示某个控件的功能,或者介绍。当然,更通俗一点讲,就是 ”这是啥?“。要想使用该功能,我们需要给窗口加一个切换到 ”这是啥“ 模式的按钮,通过设置 Flag 就可以:
关联基础知识 🚀:QWidget 窗口控件详解 — 顶层窗口操作
import sys
from PyQt5.Qt import *
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 创建窗口控件
window = QMainWindow()
window.resize(600, 400)
window.setWindowFlags(Qt.WindowContextHelpButtonHint) # 添加帮助按钮
# 3. 显示窗口
window.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())
如上,可以看到,当设置了 Qt.WindowContexHelpButtonHint
后,就会多一个问号的标志,点击这个问好就可以切换到 ”这是啥“ 模式。
0x0302:setWhatsThis(str) & whatsThis()
QWidget 的 setWhatsThis(str)
能够设置 ”这是啥“ 模式下,鼠标点击控件时的内容;whatsThis()
函数则能获取设置的对应内容(注意,前提是切换到 ”这是啥模式“):
import sys
from PyQt5.Qt import *
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 创建窗口控件
window = QMainWindow()
window.resize(600, 400)
window.setWindowFlags(Qt.WindowContextHelpButtonHint) # 添加帮助按钮
label = QLabel(window)
label.setText("Hello World")
label.resize(200, 200)
label.setWhatsThis("这是啥?这是一个标签")
print("label ”这是啥模式“ 内容: ", label.whatsThis())
# 3. 显示窗口
window.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())