PyQt5是Python语言中强大的GUI集成包,可以提供丰富的工具来创建各种类型的用户界面。RadioButton是PyQt5中一个常用的控件,允许用户从多个选项中选择一个,而皮肤可以为界面提供可视化的元素。下面是PyQt5中使用RadioButton控件并为其添加皮肤的完整攻略。
安装PyQt5
在开始之前,需要先安装好PyQt5库。可以使用pip命令进行安装:
pip install PyQt5
创建RadioButton控件
在PyQt5中,可以使用QRadioButton类创建RadioButton控件。以下代码创建了三个RadioButton控件,并将它们添加到一个QWidget窗口中:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
rbtn1 = QRadioButton('RadioButton 1', self)
rbtn2 = QRadioButton('RadioButton 2', self)
rbtn3 = QRadioButton('RadioButton 3', self)
vbox.addWidget(rbtn1)
vbox.addWidget(rbtn2)
vbox.addWidget(rbtn3)
self.setLayout(vbox)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('RadioButton demo')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
执行上述代码,可以看到创建了一个界面,其中包含三个RadioButton控件。
为RadioButton控件添加皮肤
PyQt5中可以使用QSS样式表为控件添加皮肤。以下代码将为RadioButton控件添加样式表,使其选中时呈现不同的背景色:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
rbtn1 = QRadioButton('RadioButton 1', self)
rbtn2 = QRadioButton('RadioButton 2', self)
rbtn3 = QRadioButton('RadioButton 3', self)
vbox.addWidget(rbtn1)
vbox.addWidget(rbtn2)
vbox.addWidget(rbtn3)
self.setLayout(vbox)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('RadioButton demo')
# 添加样式表
self.setStyleSheet('''
QRadioButton::indicator:checked {
background-color: blue;
}
QRadioButton::indicator:unchecked {
background-color: red;
}
''')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
执行上述代码,可以看到三个RadioButton控件呈现了不同的背景色,其颜色在选中和未选中时分别为蓝色和红色。
另外一个示例说明
以下代码创建一个包含两个RadioButton控件和一个按钮的界面。点击按钮后,如果选中了第一个RadioButton,则弹出“RadioButton 1 is selected”;如果选中了第二个RadioButton,则弹出“RadioButton 2 is selected”。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QPushButton, QVBoxLayout, QMessageBox
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
rbtn1 = QRadioButton('RadioButton 1', self)
rbtn2 = QRadioButton('RadioButton 2', self)
btn = QPushButton('Show selection', self)
btn.clicked.connect(self.showSelection)
vbox.addWidget(rbtn1)
vbox.addWidget(rbtn2)
vbox.addWidget(btn)
self.setLayout(vbox)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('RadioButton demo')
self.show()
def showSelection(self):
# 判断哪个RadioButton被选中
if self.sender().text() == 'RadioButton 1':
if self.findChild(QRadioButton, 'RadioButton 1').isChecked():
QMessageBox.information(self, 'Selected', 'RadioButton 1 is selected')
if self.sender().text() == 'RadioButton 2':
if self.findChild(QRadioButton, 'RadioButton 2').isChecked():
QMessageBox.information(self, 'Selected', 'RadioButton 2 is selected')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
执行上述代码,可以看到界面上包含两个RadioButton控件和一个按钮。点击按钮后,会弹出一个对话框,显示当前选中的RadioButton控件的名称。