Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 12.02.2023
Сообщений: 1

Тестирующая программа

12.02.2023, 20:18. Показов 934. Ответов 2

Студворк — интернет-сервис помощи студентам
Я пишу тестирующую программу с tkinter на питоне (вопросы взяты чисто для примера и в будущем их будет гораздо больше), она должна выводить вопрос, считывать введённый пользователем ответ, сравнивать его с правильным и в конце выводить количество правильных ответов. Но оно, к сожалению, не работает. Коллеги, как сделать чтобы это заработало?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import tkinter
import random
 
window = tkinter.Tk()
canvas = tkinter.Canvas()
window.title("программа-викторина по математике")
window.geometry("600x600")
window.config(bg='red')
 
endw= tkinter.Tk()
endw.geometry("200x300")
 
def start():
    global root
    window.destroy()
    root = tkinter.Tk()
    root.title("тест")
    root.geometry("600x600")
    root.config(bg='red')
 
 
 
def questions(question):
    global voprosy, otvety
    vopr = tkinter.Label(root, text=question)
    vopr.pack()
 
def answers():
    global get_otv
    global voprosy, otvety
    otv = tkinter.Entry(root, width=40)
    otv.pack()
    get_otv = otv.get()
 
test = {"Москва-столица России?" : "да", "На свете существуют единороги?" : "нет", "Гарри Поттера играл Питер Паркер?" : "нет", "Еще вопросы?" : "нет"}
voprosy = list(test.keys())
otvety = list(test.values())
pr_otv_count = 0
m = 30
 
def quiz():
    global root
    for i in range(30):
        n = random.randint(0, m - 1)
        questions(voprosy[n])
        answers()
        otvet = get_otv
        if otvet == otvety[n]:
            label = tkinter.Label(root)
            label.config(text="Правильный ответ!")
            label.pack()
            pr_otv_count += 1
            otvety.remove(otvety[n])
        elif otvet != otvety[n]:
            label = tkinter.Label(root)
            label.config(text="Ответ неправильный")
            label.pack()
            voprosy.remove(voprosy[n])
        m -= 1
endings = tkinter.Label(endw, text=('Вы ввели', pr_otv_count, 'правильных ответов', 'из', 30))
 
 
startButton = tkinter.Button(window, command=start, text="Начать")
startButton.pack()
end = tkinter.Button(window, text="Выход", command=window.destroy)
end.pack()
canvas.pack()
window.mainloop()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.02.2023, 20:18
Ответы с готовыми решениями:

тестирующая программа на с
помогите,пожалуйста,очень срочно! нужно на С сложить и отладить программу тестирования знаний студентов с алгебры! заранее...

Тестирующая программа
Доброго времени суток! Надеюсь кто-то откликнется на зов бедного студента... Мне необходимо сделать тестирующую программу на VBA. Как на...

Тестирующая программа
Здравствуйте!Есть одна программа написанная для тестирования студентов одного из вуза. Во время её запуска блокируется клавиатура и...

2
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
12.02.2023, 23:49
Цитата Сообщение от Laurita Slyzern Посмотреть сообщение
Коллеги, как сделать чтобы это заработало?
Коллега, чтобы заработало, надо что-то изменить.
Цитата Сообщение от Laurita Slyzern Посмотреть сообщение
Но оно, к сожалению, не работает.
Чтобы что-то изменить, надо для начала понимать, что вы вкладываете в фразу "не работает".
"Оно" у вас вообще не запускается, выдает какие-то ошибки? Если да, то надо про это упомянуть (естественно с формулировкой ошибки и номерами строк где они возникают).
Или "оно" у вас не выдает ошибок, но работает не так как вы хотели бы. Тогда надо написать, что вы хотите получить, а что получаете.
0
52 / 9 / 4
Регистрация: 17.12.2018
Сообщений: 17
13.02.2023, 07:56
а для чего вы создаёте несколько окон? можно ведь расположить все элементы программы в одном окне. Я понял, в чём проблема, попробую щас накидать код

Добавлено через 30 минут
Нужно бежать на работу. Собрал костылёвую версию. Работает вроде. Вечером попробую доделать
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import tkinter
import random
import time
 
class Quiz():
    def __init__(self):
        self.current = 0
        self.m = 30
        self.test = {"Москва-столица России?" : "да", "На свете существуют единороги?" : "нет", "Гарри Поттера играл Питер Паркер?" : "нет", "Еще вопросы?" : "нет"}
        self.voprosy = list(self.test.keys())
        self.otvety = list(self.test.values())
        self.pr_otv_count = 0
 
        self.create_window()
 
        self.window.mainloop()
 
    def create_window(self):
        self.window = tkinter.Tk()
        # self.canvas = tkinter.Canvas()
        self.window.title("программа-викторина по математике")
        self.window.geometry("600x600")
        self.window.config(bg='red')
 
        self.startButton = tkinter.Button(self.window, command=self.start, text="Начать")
        self.startButton.pack()
        self.end = tkinter.Button(self.window, text="Выход", command=self.window.destroy)
        self.end.pack()
        # self.canvas.pack()
        
 
        self.endw= tkinter.Tk()
        self.endw.geometry("200x300")
 
        
     
    def start(self):
        self.window.destroy()
        self.root = tkinter.Tk()
        self.root.title("тест")
        self.root.geometry("600x600")
        self.root.config(bg='red')
        self.btn_next = tkinter.Button(self.root, text="ответить", command=self.next)
        self.btn_next.grid(row=2)
        self.quiz()
     
     
     
    def questions(self, question):
        try:
            self.vopr.destroy()
 
        except:
            pass
        # self.b
        self.vopr = tkinter.Label(self.root, text=question)
        self.vopr.grid(row=0)
     
    def answers(self):
        self.otv = tkinter.Entry(self.root, width=40)
        self.otv.grid(row=1)
        
     
    def next(self):
        self.otvet = self.otv.get()
        if self.otvet == self.otvety[self.current]:
            self.label = tkinter.Label(self.root)
            self.label.config(text="Правильный ответ!")
            self.label.grid(row=4)
            self.pr_otv_count += 1
            self.otvety.remove(self.otvety[self.current])
        elif self.otvet != self.otvety[self.current]:
            self.label = tkinter.Label(self.root)
            self.label.config(text="Ответ неправильный")
            self.label.grid(row=4)
            self.voprosy.remove(self.voprosy[self.current])
        self.m -= 1
        self.current+=1
        time.sleep(0.1)
        self.window.update_idletasks()
        time.sleep(0.9)
        self.label.destroy()
        self.quiz()
        
        
     
    def quiz(self):
        
        self.questions(self.voprosy[self.current])
        self.answers()
        if self.current == len(self.test):
            self.endings = tkinter.Label(self.endw, text=('Вы ввели', self.pr_otv_count, 'правильных ответов', 'из', 30))
     
 
 
 
if __name__ == "__main__":
    app = Quiz()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2023, 07:56
Помогаю со студенческими работами здесь

Тестирующая программа
Помогите составить тестер в Делфи 7,нужно что бы вопросы брались из текстового файла

тестирующая программа
Люди добрые, помогите пожалуйста написать тестирующую программу на DELPHI, в задании у меня написано тексты вопросов и варианты ответов...

Тестирующая программа
Небольшая проблема с программой, не хочет читать текстовый файл с тестом, не могу понять в чем ошибка. Помогите пжл.

тестирующая программа
составить тестирующую программу не менее 3 вопросов и выдающую на экран количество правильных ответов.

Тестирующая программа
Доброго времени суток! Сижу думаю как реализовать тестирующую программу. алгоритм работы программы: 1) заставка; 2) ввод Фамилии и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru