не получается запустить должным образом код - вопрос №5135586

import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QRadioButton, QPushButton, QVBoxLayout, QHBoxLayout, QGroupBox class QuestionWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.question_label = QLabel('Какой язык программирования Вам нравится больше всего?') self.radio_btn1 = QRadioButton('Python') self.radio_btn2 = QRadioButton('Java') self.radio_btn3 = QRadioButton('C++') self.radio_btn4 = QRadioButton('JavaScript') self.answer_group = QGroupBox('Варианты ответов') vbox = QVBoxLayout() vbox.addWidget(self.radio_btn1) vbox.addWidget(self.radio_btn2) vbox.addWidget(self.radio_btn3) vbox.addWidget(self.radio_btn4) self.answer_group.setLayout(vbox) self.answer_button = QPushButton('Ответить') self.answer_button.clicked.connect(self.show_result) vbox_main = QVBoxLayout() vbox_main.addWidget(self.question_label) vbox_main.addWidget(self.answer_group) vbox_main.addWidget(self.answer_button) self.setLayout(vbox_main) def show_result(self): self.hide() self.result_widget.show() self.result_widget.show_correct() self.answer_button.setText('Следующий вопрос') class AnswerResultWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.result_label = QLabel('Неправильно') self.result_label.setAlignment(Qt.AlignCenter) self.right_answer_label = QLabel('Правильный ответ: Python') self.right_answer_label.setAlignment(Qt.AlignCenter) self.result_group = QGroupBox('Результат') vbox = QVBoxLayout() vbox.addWidget(self.result_label) vbox.addWidget(self.right_answer_label) self.result_group.setLayout(vbox) vbox_main = QVBoxLayout() vbox_main.addWidget(self.result_group) self.setLayout(vbox_main) def show_correct(self): self.right_answer_label.setText(f'Правильный ответ: {questionnaire.correct_answer}') class Questionnaire(QWidget): def __init__(self): # исправлено super().__init__() # исправлено self.initUI() self.questions = [(«Какой язык программирования Вам нравится больше всего?», {«Python»: True, «Java»: False, «C++»: False, «JavaScript»: False}), («Какой оператор нужен для ввода данных от пользователя?», {«scan»: False, «input»: True, «get»: False, «download»: False}), («Какая функция выводит текст на экран?», {«print»: True, «output»: False, «display»: False, «show»: False})] self.question_index = 0 self.correct_answer = «Python» def initUI(self): self.question_widget = QuestionWidget() self.result_widget = AnswerResultWidget() self.result_widget.hide() self.question_widget.result_widget = self.result_widget hbox_main = QHBoxLayout() hbox_main.addWidget(self.question_widget) hbox_main.addWidget(self.result_widget) self.setLayout(hbox_main) def ask(self): question, answers = self.questions[self.question_index] shuffled_answers = [(answer, answers[answer]) for answer in answers] for i, (answer, _) in enumerate(shuffled_answers): radio = getattr(self.question_widget, f'radio_btn{i+1}') radio.setText(answer) radio.setChecked(False) self.question_widget.question_label.setText(question) self.correct_answer = next(answer for answer, correct in shuffled_answers if correct) self.question_index += 1 def check_answer(self): if self.question_widget.radio_btn1.isChecked() and self.question_widget.radio_btn1.text() == self.correct_answer: self.show_correct(«Правильно») elif self.question_widget.radio_btn2.isChecked() and self.question_widget.radio_btn2.text() == self.correct_answer: self.show_correct(«Правильно») elif self.question_widget.radio_btn3.isChecked() and self.question_widget.radio_btn3.text() == self.correct_answer: self.show_correct(«Правильно») elif self.question_widget.radio_btn4.isChecked() and self.question_widget.radio_btn4.text() == self.correct_answer: self.show_correct(«Правильно») else: self.show_correct(«Неверно») def show_correct(self, message): self.result_widget.result_label.setText(message) self.result_widget.show_correct() self.question_widget.hide() self.result_widget.show() self.question_index += 1 if self.question_index == len(self.questions): self.question_index = 0 self.question_widget.answer_button.setText('Следующий вопрос') self.correct_answer = '' if __name__ == '__main__': app = QApplication(sys.argv) window = QWidget() window.setWindowTitle('Тест на знание языков программирования') window.setGeometry(300, 300, 400, 300) questionnaire = Questionnaire() vbox_main = QVBoxLayout() vbox_main.addWidget(questionnaire) next_question_button = QPushButton('Ответить') next_question_button.clicked.connect(questionnaire.check_answer) vbox_main.addWidget(next_question_button) window.setLayout(vbox_main) questionnaire.ask() window.show() sys.exit(app.exec_())
Ответов пока нет

Еva

от 100 p.
Читать ответы

1 1

Бесплатно
Читать ответы
Посмотреть всех экспертов из раздела Учеба и наука > Информатика
1 ответ
08.06.13
Вопрос задан анонимно
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store