📅  最后修改于: 2023-12-03 15:18:47.026000             🧑  作者: Mango
有时候我们需要为单选按钮添加一些特殊的效果,比如在鼠标悬停在按钮上时改变它的背景图像。在PyQt5中,我们可以通过一些简单的代码实现这个效果。
首先,我们需要创建一个单选按钮。在这个例子中,我们使用QRadioButton
类来创建单选按钮:
self.radioButton = QRadioButton('RadioButton', self)
这会创建一个名为'RadioButton'的单选按钮,并将其放置在一个主窗口中。
接下来,我们将设置一个鼠标悬停事件,以便在鼠标悬停在按钮上时改变它的背景图像。
def enterEvent(self, event):
self.radioButton.setStyleSheet('background-image: url(:/radio_button_hover.png);')
这行代码会将背景图像设置为radio_button_hover.png
,这个文件是放在Qt Designer中的资源文件里的。
最后,我们需要设置按钮的样式表和背景图像。
self.radioButton.setStyleSheet('QRadioButton{border:none; background-image: url(:/radio_button.png);}'
'QRadioButton::indicator:checked{image:url(:/radio_button_checked.png);}'
'QRadioButton:hover:!checked{background-image: url(:/radio_button_hover.png);}'
'QRadioButton::indicator:hover{image:url(:/radio_button_checked_hover.png);}')
这个样式表包含几个部分:
border:none
: 该部分会去掉单选按钮的边框。background-image: url(:/radio_button.png);
: 该部分会设置单选按钮的背景图像。QRadioButton::indicator:checked{image: url(:/radio_button_checked.png);}
: 当单选按钮被选中时,会显示radio_button_checked.png
。QRadioButton:hover:!checked{background-image: url(:/radio_button_hover.png);}
: 当鼠标悬停在单选按钮上时,会显示radio_button_hover.png
。QRadioButton::indicator:hover{image:url(:/radio_button_checked_hover.png);}
: 当鼠标悬停在已选中的单选按钮上时,会显示radio_button_checked_hover.png
。from PyQt5.QtWidgets import QMainWindow, QRadioButton
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 300, 200)
self.radioButton = QRadioButton('RadioButton', self)
self.radioButton.setGeometry(10, 10, 100, 30)
self.radioButton.setStyleSheet('QRadioButton{border:none; background-image: url(:/radio_button.png);}'
'QRadioButton::indicator:checked{image:url(:/radio_button_checked.png);}'
'QRadioButton:hover:!checked{background-image: url(:/radio_button_hover.png);}'
'QRadioButton::indicator:hover{image:url(:/radio_button_checked_hover.png);}')
def enterEvent(self, event):
self.radioButton.setStyleSheet('background-image: url(:/radio_button_hover.png);')
在这个例子中,我们创建了一个名为MainWindow
的主窗口,并在其中添加了一个单选按钮。然后我们设置了触发鼠标悬停事件的样式表和背景图像。