📌  相关文章
📜  PyQt5 QSpinBox – 鼠标悬停在向下箭头上时添加边框(1)

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

PyQt5 QSpinBox – 鼠标悬停在向下箭头上时添加边框

在 PyQt5 应用程序中,QSpinBox 是一个提供选择数字或值的控件,它通常由一个向上箭头和向下箭头组成。本文将介绍如何在鼠标悬停在向下箭头上时添加边框效果。

下面是一个基本的演示代码,在 PyCharm IDE 中执行:

import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QSpinBox, QVBoxLayout from PyQt5.QtGui import QCursor,QMouseEvent,QFont from PyQt5.QtCore import Qt, QPoint

class SpinBox(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        vbox = QVBoxLayout()

        spinBox = QSpinBox()
        spinBox.setRange(0,100)
        vbox.addWidget(spinBox)
        self.setLayout(vbox)
        self.setWindowTitle('PyQt5 SpinBox')

    def mouseMoveEvent(self, e: QMouseEvent):
        pos = QPoint(e.x(), e.y())
        if spinBox.rect().contains(pos):
            self.setStyleSheet("QWidget {border: 1px solid red;}")
        else:
            self.setStyleSheet("")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    spin = SpinBox()
    spin.show()
    sys.exit(app.exec_())

我们先将应用程序创建为 QDialog 窗口,然后在窗口中添加一个 QVBoxLayout 来存储 QSpinBox。

在 mouseMoveEvent 中,我们检查鼠标位置是否在 QSpinBox 矩形区域内。如果是,则在 QWidget 样式表中添加一个红色边框。当鼠标移动到其他位置时,边框样式将被清除。

在PyCharm IDE中执行代码,然后将鼠标悬停在向下箭头上,您将看到一个红色边框出现在 QSpinBox 周围。

if spinBox.rect().contains(pos):
    self.setStyleSheet("QWidget {border: 1px solid red;}")
else:
    self.setStyleSheet("")

以上部分将检查鼠标位置是否在 QSpinBox 的位置范围内,如果在,则在窗口的样式表中添加一个红色边框效果。

整合代码部分如下:

import sys 
from PyQt5.QtWidgets import QApplication, QWidget, QSpinBox, QVBoxLayout 
from PyQt5.QtGui import QCursor, QMouseEvent, QFont 
from PyQt5.QtCore import Qt, QPoint

class SpinBox(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        vbox = QVBoxLayout()

        self.spinBox = QSpinBox()

        self.spinBox.setRange(0,100)

        vbox.addWidget(self.spinBox)

        self.setLayout(vbox)

        self.setWindowTitle('PyQt5 SpinBox')

    def mouseMoveEvent(self, e: QMouseEvent):
        pos = QPoint(e.x(), e.y())
        if self.spinBox.rect().contains(pos):
            self.setStyleSheet("QWidget {border: 1px solid red;}")
        else:
            self.setStyleSheet("")

if __name__ == '__main__':
    app = QApplication(sys.argv)

    spin = SpinBox()

    spin.show()

    sys.exit(app.exec_())

无论是您是使用 PyCharm 还是其他 IDE,都可以轻松地使用 PyQt5 创建美观且有用的用户界面,包括 QSpinBox 和其他控件。