# -*- coding: utf-8 -*-
from tkinter import *
import random
def jiajian(): # 加减法函数,生成加数,和,被减数,减数,差
joj = random.randint(1, 2)
a = random.randint(1, 999)
b = random.randint(1, 999)
if joj == 1: # 随机产生
h = a + b
return [a, '+', b, h]
else:
if a > b:
h = a - b
return [a, '-', b, h]
else:
h = b - a
return [b, '-', a, h]
def cc(i=1):
# 乘除运算,返回乘数,积。i表示难度,1为个位数,2为2位数,3为3位数,j,1是乘,2是除
jc = random.randint(1, 2)
if i == 1: # 难度1
a = random.randint(2, 9)
b = random.randint(2, 9)
j = a * b
if jc == 1: # 乘法
return [a, '*', b, j] # 1为乘法,2为除法
else:
return [j, '/', a, b] # 1为乘法,2为除法
elif i == 2: # 难度2
a = random.randint(11, 99)
b = random.randint(11, 99)
j = a * b
if jc == 1: # 乘法
return [a, '*', b, j] # 1为乘法,2为除法
else:
return [j, '/', a, b] # 1为乘法,2为除法
else: # 难度3
a = random.randint(101, 999)
b = random.randint(101, 999)
j = a * b
if jc == 1: # 乘法
return [a, '*', b, j] # 1为乘法,2为除法
else:
return [j, '/', a, b] # 1为乘法,2为除法
def yz(): # 这是按钮的验证函数。
global lista
if ent1.get() == str(lista[3]):
ndsel()
lab1.config(text=str(lista[0]) + lista[1] + str(lista[2]) + '=')
lab2.config(text='上一题解题正确,已更新题目')
lab2.config(fg='green')
ent1.delete(0, END)
ent1.focus()
else: # 回答错误,清除文本框,标签2更新
ent1.delete(0, END)
ent1.focus()
lab2.config(text='解答错误请重新输入')
lab2.config(fg='red')
def ndsel(): # 单选按钮难度设定
global lista
a = nd.get()
if a == 1:
lista = jiajian()
lab1.config(text=str(lista[0]) + lista[1] + str(lista[2]) + '=')
lab2.config(text='题目已变更')
lab2.config(fg='green')
ent1.delete(0, END)
ent1.focus()
else:
lista = cc(a - 1)
lab1.config(text=str(lista[0]) + lista[1] + str(lista[2]) + '=')
lab2.config(text='题目已变更')
lab2.config(fg='green')
ent1.delete(0, END)
ent1.focus()
lista = jiajian()
root = Tk()
root.title("小学加减乘除练习")
root.geometry('600x400')
labf1 = LabelFrame(root, text='模式选择', width=500, height=150)
labf1.pack()
nd = IntVar()
nd.set(1)
rb1 = Radiobutton(labf1, text='加减法运算', variable=nd, value=1, command=ndsel)
rb2 = Radiobutton(labf1, text='十以内乘除法', variable=nd, value=2, command=ndsel)
rb3 = Radiobutton(labf1, text='百以内乘除法', variable=nd, value=3, command=ndsel)
rb4 = Radiobutton(labf1, text='千以内乘除法', variable=nd, value=4, command=ndsel)
rb1.pack(side=LEFT)
rb2.pack(side=LEFT)
rb3.pack(side=LEFT)
rb4.pack(side=LEFT)
lab1 = Label(root, text=str(lista[0]) + lista[1] + str(lista[2]) + '=', font=('宋体', 28))
lab1.pack()
ent1 = Entry(root, font=('宋体', 28), width=10)
ent1.pack()
but1 = Button(root, text='确定', font=('宋体', 28), command=yz)
but1.pack()
lab2 = Label(root, text='请在文本框内输入正确答案,点击确定键验算', pady=5)
lab2.pack()
'''f=open('a.txt','w',encoding='utf8')
for i in range(10000):
listb=jiajian()
f.write(str(listb[0])+listb[1]+str(listb[2])+'='+"\t\t\t")
f.close()'''
root.mainloop()