Как сбросить нажатие Radiobutton в pyqt5?
Имеется, к примеру, два radiobutton. Пользователь нажимает на одну из них. Скажите, пожалуйста, как сделать так, чтобы можно было сбросить его нажатие и кнопка опять стала не нажатой?
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, \
QGridLayout, QPushButton, QLabel, QHBoxLayout, QVBoxLayout, QLineEdit, QRadioButton
from PyQt5.QtCore import QTimer, QTime, Qt
from PyQt5.QtGui import QFont, QIcon, QPixmap
question_names = ['Вопрос 1', 'Вопрос 2', 'Вопрос 3', 'Вопрос 4', 'Вопрос 5']
question_values = {0: 'Верно ли, что информация в компьютере хранится\nв двоичном коде?',
1: 'Наименьшая единица информации называется:',
2: 'Элементной базой первых компьютеров являлись:',
3: 'Назовите устройства вывода информации:',
4: 'Назовите системы программирования:'}
question_answers = {
0: ['Только числовая', 'Только числовая и текстовая', 'Любая информация', 'Вся за исключением видео'],
1: ['байт', 'бит', 'бод', 'бит/с'],
2: ['Микросхемы', 'Дискретные полупроводники', 'Радиолампы', 'Транзисторы'],
3: ['Монитор', 'Мышь', 'Клавиатура', 'Принтер'],
4: ['Delphi', 'Visual Basic', 'Microsoft', 'Turbo Pascal']
}
right_answers = {0: 'Любая информация',
1: 'бит',
2: 'Радиолампы',
3: 'Мышь',
4: 'Visual Basic'}
class FormBuilder(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.question_number = 0
self.selected_answer = ''
self.all_right_answers = 0
self.create_all_forms()
self.fill_forms()
self.create_layers()
def create_all_forms(self):
self.question_name = QLabel(self)
self.question_value = QLabel(self)
self.option_label = QLabel(self)
self.first_rbutton = QRadioButton(self)
self.second_rbutton = QRadioButton(self)
self.third_rbutton = QRadioButton(self)
self.fourth_rbutton = QRadioButton(self)
self.check_answer_button = QPushButton(self)
self.next_button = QPushButton(self)
self.lower_text_label = QLabel(self)
def fill_forms(self):
self.question_name.setText(question_names[self.question_number])
self.question_name.setFont(QFont("Times", 28, QFont.Bold))
self.question_value.setText(question_values[self.question_number])
self.question_value.setFont(QFont("Times", 16, QFont.Cursive))
self.option_label.setText('Варианты ответов:')
self.option_label.setFont(QFont("Times", 16, QFont.DemiBold))
self.first_rbutton.setText(question_answers[self.question_number][0])
self.first_rbutton.setFont(QFont("Times", 16, QFont.Cursive))
self.first_rbutton.value = question_answers[self.question_number][0]
self.first_rbutton.toggled.connect(self.onClickedRadio)
self.second_rbutton.setText(question_answers[self.question_number][1])
self.second_rbutton.setFont(QFont("Times", 16, QFont.Cursive))
self.second_rbutton.toggled.connect(self.onClickedRadio)
self.second_rbutton.value = question_answers[self.question_number][1]
self.third_rbutton.setText(question_answers[self.question_number][2])
self.third_rbutton.setFont(QFont("Times", 16, QFont.Cursive))
self.third_rbutton.toggled.connect(self.onClickedRadio)
self.third_rbutton.value = question_answers[self.question_number][2]
self.fourth_rbutton.setText(question_answers[self.question_number][3])
self.fourth_rbutton.setFont(QFont("Times", 16, QFont.Cursive))
self.fourth_rbutton.toggled.connect(self.onClickedRadio)
self.fourth_rbutton.value = question_answers[self.question_number][3]
self.check_answer_button.setText('Проверить ответ')
self.check_answer_button.setFont(QFont("Times", 16, QFont.DemiBold))
self.check_answer_button.clicked.connect(self.onClickedCheck)
self.next_button.setText('Перейти далее')
self.next_button.setFont(QFont("Times", 16, QFont.DemiBold))
self.next_button.clicked.connect(self.onClickedNext)
self.next_button.setEnabled(False)
self.lower_text_label.setText('Нажмите "Проверить ответ" для проверки.')
self.lower_text_label.setFont(QFont("Times", 16, QFont.Cursive))
self.lower_text_label.setStyleSheet(
'border-style: solid; border-width: 1px; border-color: gray; border-radius: 6;')
def create_layers(self):
layout = QVBoxLayout(self)
question_number_layer = QHBoxLayout()
question_number_layer.addWidget(self.question_name)
layout.addLayout(question_number_layer)
question_value_layer = QHBoxLayout()
question_value_layer.addWidget(self.question_value)
layout.addLayout(question_value_layer)
option_layer = QHBoxLayout()
option_layer.addWidget(self.option_label)
layout.addLayout(option_layer)
options_horizontal_layer = QHBoxLayout()
options_layer = QVBoxLayout()
options_layer.addWidget(self.first_rbutton)
options_layer.addWidget(self.second_rbutton)
options_layer.addWidget(self.third_rbutton)
options_layer.addWidget(self.fourth_rbutton)
options_horizontal_layer.addLayout(options_layer)
layout.addLayout(options_horizontal_layer)
buttons_layer = QHBoxLayout()
buttons_layer.addWidget(self.check_answer_button)
buttons_layer.addWidget(self.next_button)
layout.addLayout(buttons_layer)
text_layer = QHBoxLayout()
text_layer.addWidget(self.lower_text_label)
layout.addLayout(text_layer)
def turn_rbuttons(self, point):
self.first_rbutton.setEnabled(point)
self.second_rbutton.setEnabled(point)
self.third_rbutton.setEnabled(point)
self.fourth_rbutton.setEnabled(point)
def turn_check_button(self, point):
self.check_answer_button.setEnabled(point)
def onClickedRadio(self):
radioButton = self.sender()
if radioButton.isChecked():
self.selected_answer = radioButton.value
def onClickedCheck(self):
try:
self.check_answer_button.clicked.disconnect()
except:
pass
if self.selected_answer == right_answers[self.question_number]:
self.lower_text_label.setText('Правильный ответ!')
self.all_right_answers += 1
self.question_number += 1
self.turn_rbuttons(False)
self.turn_check_button(False)
self.next_button.setEnabled(True)
else:
self.lower_text_label.setText('Неправильный ответ!')
self.question_number += 1
self.turn_rbuttons(False)
self.turn_check_button(False)
self.next_button.setEnabled(True)
def onClickedNext(self):
self.fill_forms()
self.turn_rbuttons(True)
self.turn_check_button(True)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
self.build_skeleton_with_basic_settings()
self.create_and_connect_grid()
def build_skeleton_with_basic_settings(self):
self.setFixedSize(500, 360)
self.setWindowTitle('Тест по информатике')
def create_and_connect_grid(self):
self.grid = QGridLayout(self.centralWidget)
self.formBuilder = FormBuilder()
self.grid.addWidget(self.formBuilder, 0, 0, Qt.AlignTop)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MainWindow()
ex.show()
sys.exit(app.exec_())