Загрузка данных
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QWidget, QHBoxLayout, QVBoxLayout, QGroupBox, QButtonGroup, QRadioButton, QPushButton, QLabel)
from random import shuffle
app = QApplication([])
btn_OK = QPushButton('Ответить')
lb_Question = QLabel('Самый сложный вопрос в мире!')
RadioGroupBox = QGroupBox("Варианты ответов")
rbtn_1 = QRadioButton('Вариант 1')
# допиши ещё три кнопки: rbtn_2, rbtn_3, rbtn_4
RadioGroup = QButtonGroup()
RadioGroup.addButton(rbtn_1)
# допиши: добавь в группу остальные три кнопки
layout_ans1 = QHBoxLayout()
layout_ans2 = QVBoxLayout()
layout_ans3 = QVBoxLayout()
layout_ans2.addWidget(rbtn_1)
layout_ans2.addWidget(rbtn_2)
# допиши: rbtn_3 и rbtn_4 во второй столбец (layout_ans3)
layout_ans1.addLayout(layout_ans2)
# допиши: добавь второй столбец в layout_ans1
RadioGroupBox.setLayout(layout_ans1)
AnsGroupBox = QGroupBox("Результат теста")
lb_Result = QLabel('прав ты или нет?')
lb_Correct = QLabel('ответ будет тут!')
layout_res = QVBoxLayout()
layout_res.addWidget(lb_Result, alignment=(Qt.AlignLeft | Qt.AlignTop))
layout_res.addWidget(lb_Correct, alignment=Qt.AlignHCenter, stretch=2)
AnsGroupBox.setLayout(layout_res)
layout_line1 = QHBoxLayout()
# допиши: layout_line2 и layout_line3
layout_line1.addWidget(lb_Question, alignment=(Qt.AlignHCenter | Qt.AlignVCenter))
layout_line2.addWidget(RadioGroupBox)
layout_line2.addWidget(AnsGroupBox)
AnsGroupBox.hide()
layout_line3.addStretch(1)
layout_line3.addWidget(btn_OK, stretch=2)
layout_line3.addStretch(1)
layout_card = QVBoxLayout()
layout_card.addLayout(layout_line1, stretch=2)
# допиши: добавь layout_line2 (stretch=8)
layout_card.addStretch(1)
# допиши: добавь layout_line3 (stretch=1)
layout_card.addStretch(1)
layout_card.setSpacing(5)
def show_result():
''' показать панель ответов '''
RadioGroupBox.hide()
AnsGroupBox.show()
btn_OK.setText('Следующий вопрос')
def show_question():
''' показать панель вопросов '''
RadioGroupBox.show()
AnsGroupBox.hide()
btn_OK.setText('Ответить')
RadioGroup.setExclusive(False)
rbtn_1.setChecked(False)
# допиши: сними выбор с rbtn_2, rbtn_3, rbtn_4
RadioGroup.setExclusive(True)
answers = [rbtn_1, rbtn_2, rbtn_3, rbtn_4]
def ask(question, right_answer, wrong1, wrong2, wrong3):
''' функция записывает значения вопроса и ответов в соответствующие виджеты,
при этом варианты ответов распределяются случайным образом'''
shuffle(answers)
answers[0].setText(right_answer)
answers[1].setText(wrong1)
# допиши: answers[2] и answers[3] получают wrong2 и wrong3
lb_Question.setText(question)
lb_Correct.setText(right_answer)
show_question()
def show_correct(res):
''' показать результат - установим переданный текст в надпись "результат" и покажем нужную панель '''
lb_Result.setText(res)
show_result()
def check_answer():
''' если выбран какой-то вариант ответа, то надо проверить и показать панель ответов'''
if answers[0].isChecked():
show_correct('Правильно!')
else:
# допиши: если выбран answers[1], answers[2] или answers[3] — показать 'Неверно!'
window = QWidget()
window.setLayout(layout_card)
window.setWindowTitle('Memo Card')
ask('Государственный язык Бразилии', 'Португальский', 'Бразильский', 'Испанский', 'Итальянский')
btn_OK.clicked.connect(check_answer)
window.resize(400, 300)
window.show()
app.exec()