📌  相关文章
📜  PyQt5 – 悬停时更改标签的背景颜色(1)

📅  最后修改于: 2023-12-03 15:04:00.415000             🧑  作者: Mango

PyQt5 – 悬停时更改标签的背景颜色

在 PyQt5 中,我们可以使用 QToolTip 提供更多信息或帮助文本。但是,在某些情况下,更改控件的背景色可能会使控件更具可读性。

在本文中,我们将学习如何在悬停时更改标签的背景颜色以提供更多信息或改进用户界面体验。

使用以下步骤创建一个简单的 PyQt5 应用程序:

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

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 Tooltip example'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.label = QLabel('This is a PyQt5 Tooltip example', self)
        self.label.move(50, 50)
        self.label.resize(self.label.sizeHint())
        self.show()

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

在此示例中,我们创建了一个 QLable 控件来显示一些文本。现在,我们需要为此添加悬停事件和样式表。

首先,我们需要为 QLabel 控件添加鼠标悬停事件:

self.label.setStyleSheet("background-color:lightblue;")
self.label.setToolTip("This is a PyQt5 Tooltip example")
self.label.setMouseTracking(True)
self.label.enterEvent = lambda event: self.set_stylesheet("background-color:lightgreen;")
self.label.leaveEvent = lambda event: self.set_stylesheet("background-color:lightblue;")

在上面的示例中,我们为 QLabel 控件添加了 CSS 样式表、工具提示并启用了鼠标跟踪。我们还添加了 enterEvent 和 leaveEvent 事件来更改控件在鼠标悬停时的背景颜色。

现在运行该应用程序,当鼠标悬停在标签上时,背景颜色将更改为绿色,并在鼠标离开时返回蓝色。

以下是完整的代码示例:

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

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 Tooltip example'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.label = QLabel('This is a PyQt5 Tooltip example', self)
        self.label.move(50, 50)
        self.label.resize(self.label.sizeHint())
        self.label.setStyleSheet("background-color:lightblue;")
        self.label.setToolTip("This is a PyQt5 Tooltip example")
        self.label.setMouseTracking(True)
        self.label.enterEvent = lambda event: self.set_stylesheet("background-color:lightgreen;")
        self.label.leaveEvent = lambda event: self.set_stylesheet("background-color:lightblue;")
        self.show()

    def set_stylesheet(self, style):
        self.label.setStyleSheet(style)

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

这样,我们就可以在悬停时更改标签的背景颜色了。