📌  相关文章
📜  PyQt5 - 悬停时选中状态的单选按钮的背景图像(1)

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

PyQt5 - 悬停时选中状态的单选按钮的背景图像

PyQt5是一个Python GUI框架,其具有广泛的功能和丰富的UI元素。在本文中,我们将探讨如何在悬停时为选中状态的单选按钮添加背景图像。

准备工作

在演示本教程时,我们需要安装PyQt5库。

pip install PyQt5
实现

我们将创建一个单选按钮,并在其悬停时更改其背景图像。

首先,我们需要导入必要的模块。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QIcon, QPixmap, QPainter
from PyQt5.QtCore import Qt

接下来,我们将创建一个窗口并将单选按钮添加到其中。

class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 - Hovering Radio Button'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.initUI()
        
    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        
        self.rbtn = QRadioButton('Option 1', self)
        self.rbtn.setGeometry(100, 50, 100, 30)
        
        self.show()

现在,我们将创建一个悬停事件处理程序,以设置单选按钮的背景图像。

class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 - Hovering Radio Button'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.initUI()
        
    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        
        self.rbtn = QRadioButton('Option 1', self)
        self.rbtn.setGeometry(100, 50, 100, 30)
        
        self.rbtn.setStyleSheet("""
            QRadioButton:hover:checked {
                background-image: url(hover_selected.png);
            }
        """)
        
        self.show()

最后,我们只需在同一目录下添加带有“hover_selected.png”名称的图像,此图像将在悬停时用作选中状态的单选按钮的背景图像。

我们现在已经创建了悬停时选中状态的单选按钮,其背景图像将在悬停时更改。完整的代码如下所示:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QIcon, QPixmap, QPainter
from PyQt5.QtCore import Qt

class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 - Hovering Radio Button'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.initUI()
        
    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        
        self.rbtn = QRadioButton('Option 1', self)
        self.rbtn.setGeometry(100, 50, 100, 30)
        
        self.rbtn.setStyleSheet("""
            QRadioButton:hover:checked {
                background-image: url(hover_selected.png);
            }
        """)
        
        self.show()

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

注意,我们使用的样式表属性是由“:hover:checked”组成的。 :hover伪类用于检测鼠标何时悬停在单选按钮上,checked伪类用于检测单选按钮何时处于选中状态。

总结

在本教程中,我们学习了如何在悬停时为选中状态的单选按钮添加背景图像。重要的是要记住,我们使用的样式表属性是由“:hover:checked”组成的,以便在单选按钮被选中并悬停时使用不同的背景图像。