以下是关于使用PyQt5为单选按钮的指示器设置皮肤的完整使用攻略。
- 安装PyQt5
在终端或命令行中输入如下命令安装PyQt5
pip install PyQt5
- 导入PyQt相关库
使用如下代码导入PyQt的主要库,这里我们仅需要使用其中的QtWidgets模块。
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QPainter, QColor, QIcon
from PyQt5.QtCore import QRect, Qt
import sys
- 创建PyQt应用程序
使用如下代码创建一个PyQt应用程序,并在其中创建一个QWidget。
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('PyQt5 RadioButton Example')
- 创建单选按钮并为其设置皮肤
使用如下代码创建多个单选按钮并为其设置皮肤。
# 定义单选按钮的样式表
radio_style = '''
QRadioButton {{
font-size: 20px;
padding: 10px;
border: 2px solid lightgrey;
border-radius: 12px;
color: darkgrey;
background-color: white;
}}
QRadioButton::indicator {{
width: 20px;
height: 20px;
border-radius: 10px;
margin-left: 5px;
background-color: lightgrey;
}}
QRadioButton::indicator:selected {{
background-color: orange;
}}
'''
# 创建两个单选按钮并为其设置样式表
radio1 = QRadioButton('Option 1', window)
radio1.setGeometry(QRect(50, 50, 200, 40))
radio1.setStyleSheet(radio_style)
radio2 = QRadioButton('Option 2', window)
radio2.setGeometry(QRect(50, 100, 200, 40))
radio2.setStyleSheet(radio_style)
在上述代码中,我们定义了一个样式表,包含了单选按钮的各种样式属性,并为两个单选按钮设置了相同的样式表。
- 显示窗口
最后一步是使用如下代码显示窗口:
window.setGeometry(100, 100, 300, 200)
window.show()
sys.exit(app.exec_())
完整代码示例1:
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QPainter, QColor, QIcon
from PyQt5.QtCore import QRect, Qt
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('PyQt5 RadioButton Example')
# 定义单选按钮的样式表
radio_style = '''
QRadioButton {{
font-size: 20px;
padding: 10px;
border: 2px solid lightgrey;
border-radius: 12px;
color: darkgrey;
background-color: white;
}}
QRadioButton::indicator {{
width: 20px;
height: 20px;
border-radius: 10px;
margin-left: 5px;
background-color: lightgrey;
}}
QRadioButton::indicator:selected {{
background-color: orange;
}}
'''
# 创建两个单选按钮并为其设置样式表
radio1 = QRadioButton('Option 1', window)
radio1.setGeometry(QRect(50, 50, 200, 40))
radio1.setStyleSheet(radio_style)
radio2 = QRadioButton('Option 2', window)
radio2.setGeometry(QRect(50, 100, 200, 40))
radio2.setStyleSheet(radio_style)
window.setGeometry(100, 100, 300, 200)
window.show()
sys.exit(app.exec_())
运行上述代码,将会在屏幕上显示两个单选按钮,并为其设置了样式表。
- 创建自定义单选按钮控件
除了上述方法外,我们还可以创建自定义的单选按钮控件,并为其设置皮肤。下面是一个示例代码,展示如何创建自定义的单选按钮控件。
class RadioButton(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setGeometry(QRect(0, 0, 200, 40))
self._checked = False
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
painter.setPen(Qt.NoPen)
if self._checked:
painter.setBrush(QColor('#247ba0'))
else:
painter.setBrush(QColor('#b2dbbf'))
painter.drawEllipse(QRect(2, 2, 36, 36))
painter.end()
def mousePressEvent(self, event):
self.setChecked(not self._checked)
def isChecked(self):
return self._checked
def setChecked(self, checked):
self._checked = checked
self.update()
在上述代码中,我们创建了一个名为RadioButton的自定义控件,并重写了其中的paintEvent方法。在该方法中,我们使用QPainter绘制了一个圆形,用于表示单选按钮的选中状态。然后,我们还重写了mousePressEvent方法,以便当用户点击控件时,切换控件的选中状态。
完成以上步骤后,我们可以使用如下代码创建自定义的单选按钮控件,并为其设置皮肤:
# 创建两个自定义单选按钮并为其设置样式
radio3 = RadioButton(window)
radio3.move(50, 150)
radio4 = RadioButton(window)
radio4.move(150, 150)
# 设置样式
radio3.setStyleSheet('QWidget { background-color: white }')
radio4.setStyleSheet('QWidget { background-color: white }')
完整代码示例2:
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QPainter, QColor, QIcon
from PyQt5.QtCore import QRect, Qt
import sys
class RadioButton(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setGeometry(QRect(0, 0, 200, 40))
self._checked = False
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
painter.setPen(Qt.NoPen)
if self._checked:
painter.setBrush(QColor('#247ba0'))
else:
painter.setBrush(QColor('#b2dbbf'))
painter.drawEllipse(QRect(2, 2, 36, 36))
painter.end()
def mousePressEvent(self, event):
self.setChecked(not self._checked)
def isChecked(self):
return self._checked
def setChecked(self, checked):
self._checked = checked
self.update()
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('PyQt5 RadioButton Example')
# 定义单选按钮的样式表
radio_style = '''
QRadioButton {{
font-size: 20px;
padding: 10px;
border: 2px solid lightgrey;
border-radius: 12px;
color: darkgrey;
background-color: white;
}}
QRadioButton::indicator {{
width: 20px;
height: 20px;
border-radius: 10px;
margin-left: 5px;
background-color: lightgrey;
}}
QRadioButton::indicator:selected {{
background-color: orange;
}}
'''
# 创建两个单选按钮并为其设置样式表
radio1 = QRadioButton('Option 1', window)
radio1.setGeometry(QRect(50, 50, 200, 40))
radio1.setStyleSheet(radio_style)
radio2 = QRadioButton('Option 2', window)
radio2.setGeometry(QRect(50, 100, 200, 40))
radio2.setStyleSheet(radio_style)
# 创建两个自定义单选按钮并为其设置样式
radio3 = RadioButton(window)
radio3.move(50, 150)
radio4 = RadioButton(window)
radio4.move(150, 150)
# 设置样式
radio3.setStyleSheet('QWidget { background-color: white }')
radio4.setStyleSheet('QWidget { background-color: white }')
window.setGeometry(100, 100, 300, 200)
window.show()
sys.exit(app.exec_())
运行上述代码,将会在屏幕上显示两个标准单选按钮和两个自定义单选按钮,它们都会被设置为对应的皮肤。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 – 为单选按钮的指示器设置皮肤 - Python技术站