下面就为大家介绍一下 Python 中如何使用 PyQt5 实现鼠标悬停时单选按钮的背景颜色。
一、安装 PyQt5
首先需要先安装 PyQt5 模块,可以通过 pip 工具进行安装。在控制台输入以下指令进行安装:
pip install PyQt5
二、创建窗口
在使用 PyQt5 进行 GUI 编程时,需要对窗口进行创建与布局。在这里我们使用 QRadioButton 控件作为单选按钮。下面是一个简单的 Python 程序,在窗口中添加了一个单选按钮控件,以及两个文本标签:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout(self)
lbl = QLabel('选择你喜欢的编程语言,悬停时改变颜色', self)
vbox.addWidget(lbl)
rbtn1 = QRadioButton('Python', self)
rbtn1.toggled.connect(self.changeColor)
vbox.addWidget(rbtn1)
rbtn2 = QRadioButton('Java', self)
rbtn2.toggled.connect(self.changeColor)
vbox.addWidget(rbtn2)
self.setLayout(vbox)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('单选按钮演示')
self.show()
def changeColor(self, state):
if state == True:
self.setStyleSheet("background-color: orange;")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在程序中,定义了一个名为 Example
的类,继承自 QWidget
(窗口基类)。在 initUI()
方法中,我们使用了 QVBoxLayout 布局管理器,添加了一个文本标签 lbl
和两个单选按钮 rbtn1
和 rbtn2
。我们通过调用 self.setStyleSheet()
方法来改变窗口的背景颜色。当单选按钮控件的状态被改变时,就会调用 changeColor()
方法,其中通过判断单选按钮控件的状态来改变窗口的背景颜色。
三、示例实现
下面为大家提供两个示例攻略。首先,我们创建一个第一个窗口,包含两个单选按钮控件。当鼠标悬停在不同的单选按钮上时,背景颜色就会发生改变。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout(self)
lbl = QLabel('选择你喜欢的编程语言,悬停时改变颜色', self)
vbox.addWidget(lbl)
rbtn1 = QRadioButton('Python', self)
rbtn1.toggled.connect(self.changeColor1)
vbox.addWidget(rbtn1)
rbtn2 = QRadioButton('Java', self)
rbtn2.toggled.connect(self.changeColor2)
vbox.addWidget(rbtn2)
self.setLayout(vbox)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('单选按钮演示')
self.show()
def changeColor1(self, state):
if state == True:
self.setStyleSheet("background-color: orange;")
def changeColor2(self, state):
if state == True:
self.setStyleSheet("background-color: blue;")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
第二个示例为多个单选按钮控件,当鼠标悬停在不同的单选按钮控件上时,背景颜色也会发生改变。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout(self)
lbl = QLabel('选择你喜欢的编程语言,悬停时改变颜色', self)
vbox.addWidget(lbl)
self.rbtn = []
for i in range(3):
self.rbtn.append(QRadioButton('{}'.format(i+1),self))
self.rbtn[i].toggled.connect(self.changeColor)
vbox.addWidget(self.rbtn[i])
self.setLayout(vbox)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('单选按钮演示')
self.show()
def changeColor(self, state):
if state == True:
sender = self.sender()
if sender.text() == "1":
self.setStyleSheet("background-color: orange;")
elif sender.text() == "2":
self.setStyleSheet("background-color: blue;")
else:
self.setStyleSheet("background-color: green;")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
以上就是使用 PyQt5 实现鼠标悬停时单选按钮的背景颜色的完整攻略,希望对你有所帮助。