Найти - Пользователи
Полная версия: Написать программу для проверки знаний таблицы умножения: как исправить ошибку
Начало » Центр помощи » Написать программу для проверки знаний таблицы умножения: как исправить ошибку
1
Tenebras
Проблема:
Когда открывается окно программы - текста нет вообще. Вводим, допустим, “2”. Получаем ответ положительный или отрицательный (не важно) под полем ввода. Над полем ввода появляется пример. Ответ на который мы дали.

Я не понимаю - как сделать так, что бы сперва появлялся пример, потом уже вводить ответ.

Пробовал запускать сперва функцию с рандомом и выводом, а потом уже функцию ввода ответа и его оценки. Но тогда он этот рандом вычисляет два раза. Ну и плюс при запуске программы поле с вопросом чистое. Ну это то ладно. Там кнопка “Проверка!” может выступить в роле кнопки “Начать!”. Это-то решимо, хотя хотелось бы знать решение, которое позволит вывести пример при запуске и потом уже выводить новые только после ввода ответа и клика по Enter.

Может нужен цикл? Пробовал, но ни чего не вышло.
До этого писал этот же скрипт (прошлое задание), но без графического интерфейса. всё вышло хорошо…

Собственно сам скрипт:

 #!/usr/bin/ python3
# coding:utf8
from tkinter import *
import random
import time
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
#=+=+=+=+=+=+=+=+= Ф У Н К Ц И И +=+=+=+=+=+=+=+=
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
def ext(event):
	print('Проверка!')
def close_win(event):
	root.destroy()	
def print_1():
	label2.configure(text = 'Поздравляю!')
def print_2():
	label2.configure(text = 'Ошибка!')
def random1():
	a = random.randint(0,10)
	b = random.randint(0,10)
	label1.configure(text=str(a)+' x '+str(b)+' = ')
	result=a*b
	return(result)
def caption(event):
	result = random1()
	t = entry1.get()
	if result == int(t): label2.configure(text = print_1())
	else: label2.configure(text = print_2())
	
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=  
root = Tk() # Создаём главное окно
frame1=Frame(root,bd=1)
frame4=Frame(root,bd=1, width=50)
frame5=Frame(root,bd=1)
frame2=Frame(root,bd=1)
frame3=Frame(frame2,bd=1,width=50)
label2 = Label(frame5,width=40,height=5,fg='black',font='arial 12')
label1 = Label(frame1,width=50,height=5,fg='black',font='arialblack 18')
button1=Button(frame2,text='Выход',width=7,height=1,bg='lightgray',fg='black',font='arial 14')
button2=Button(frame2,text='Проверка!',width=7,height=1,bg='lightgray',fg='black',font='arial 14')
entry1 = Entry(frame4, width=12,font='Arial 14')
#label1.bind('a', random1)
entry1.bind('<Return>', caption)
button1.bind('<Button-1>', close_win)
root.bind('q', close_win)
button2.bind('<Button-1>', ext)
root.bind('z', ext)
label1.pack()
label2.pack()
button1.pack(side='left')
button2.pack(side='right')
entry1.pack()
frame1.pack()
frame4.pack()
frame5.pack()
frame2.pack()
frame3.pack(side='bottom')
root.mainloop() # Завершение
vic57
del
vic57
сделай классом и забей инициализацию в __init__
но как ты пишешь - убиться об угол
 import tkinter as tk
from random import sample
class W(tk.Frame):
    def __init__(self,parent):
        tk.Frame.__init__(self,parent)
        self.pack(fill=tk.BOTH,expand=True)
        self.lblAns = tk.Label(self,bg="#def",text="Начнем?")
        self.lblAns.pack(fill=tk.BOTH,expand=True)
        self.lblQwe = tk.Label(self,bg="#fed")
        self.lblQwe.pack(fill=tk.BOTH,expand=True)
        frame = tk.Frame(self)
        self.entry = tk.Entry(frame)
        self.btn = tk.Button(frame,text='Ответ',command = self.check)
        self.entry.grid(row= 0,column=0)
        self.btn.grid(row=0,column=1)
        frame.pack()
        self.quest()
    def check(self):
        q1,q2 = self.lblQwe['text'].split('x')
        qwe = int(q1)*int(q2)
        try:
            ans = int(self.entry.get())
        except:
            self.lblAns['text'] = "Ошибка ввода данных"
            return
        if qwe != ans:
            self.lblAns['text'] = "Ответ неверен. Повторите"
        else:
            self.lblAns['text'] = "Ответ верен"
            self.entry.delete(0,tk.END)
            self.quest()
    def quest(self):
        v1,v2 = sample(range(2,11),2)
        self.lblQwe['text']= str(v1)+'x'+str(v2)
    
if __name__=="__main__":
    root = tk.Tk()
    app = W(root)
    root.mainloop()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB