📅  最后修改于: 2023-12-03 15:03:59.404000             🧑  作者: Mango
在 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 和其他控件。