📌  相关文章
📜  PyQt5 - 未选中单选按钮指示器的背景图像(1)

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

PyQt5 - 未选中单选按钮指示器的背景图像

在 PyQt5 中,我们可以对单选按钮的指示器进行自定义,包括指示器的背景图像。

设置未选中指示器背景图像

首先,我们需要通过调整单选按钮的背景图片来设置未选中指示器的背景图像。我们可以使用 QButtonGroup 来获取所有单选按钮,并通过 setIcon 方法设置图像。

from PyQt5.QtWidgets import QApplication, QMainWindow, QRadioButton, QButtonGroup
from PyQt5.QtGui import QIcon

app = QApplication([])
window = QMainWindow()

radio_button_1 = QRadioButton("Option 1", window)
radio_button_2 = QRadioButton("Option 2", window)

button_group = QButtonGroup(window)
button_group.addButton(radio_button_1)
button_group.addButton(radio_button_2)

unchecked_icon = QIcon("unchecked.png")  # 未选中指示器的背景图像
checked_icon = QIcon("checked.png")  # 选中指示器的背景图像

for button in button_group.buttons():
    button.setIcon(unchecked_icon)

这里,我们创建了两个单选按钮,并将它们添加到了一个 QButtonGroup 中。然后,我们设置了未选中指示器的背景图像,遍历了按钮组中的所有按钮,并为每个按钮设置了相同的背景图像。

设置选中指示器背景图像

与设置未选中指示器背景图像类似,我们也可以设置选中指示器的背景图像。

for button in button_group.buttons():
    button.toggled.connect(lambda checked, button=button: button.setIcon(checked_icon if checked else unchecked_icon))

通过为按钮的 toggled 状态连接一个函数,我们可以在按钮被选中或取消选中的时候更新其背景图像。

注意: 这里使用 lambda 函数在调用时将按钮作为参数传递,是因为在循环中直接传递 button 会导致所有的连接函数都只使用最后一个按钮。

结语

通过以上方法,我们可以很容易地自定义单选按钮的指示器背景图像,使 UI 设计更加个性化。完整代码如下:

from PyQt5.QtWidgets import QApplication, QMainWindow, QRadioButton, QButtonGroup
from PyQt5.QtGui import QIcon

app = QApplication([])
window = QMainWindow()

radio_button_1 = QRadioButton("Option 1", window)
radio_button_2 = QRadioButton("Option 2", window)

button_group = QButtonGroup(window)
button_group.addButton(radio_button_1)
button_group.addButton(radio_button_2)

unchecked_icon = QIcon("unchecked.png")  # 未选中指示器的背景图像
checked_icon = QIcon("checked.png")  # 选中指示器的背景图像

for button in button_group.buttons():
    button.setIcon(unchecked_icon)
    button.toggled.connect(lambda checked, button=button: button.setIcon(checked_icon if checked else unchecked_icon))

window.show()
app.exec_()