代码拉取完成,页面将自动刷新
同步操作将从 Akai_akari/SmartEdu 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import wx
import matplotlib.pyplot as plt
import mathQuestions as mQ
import check_panel
def symbol_check(sym):
if sym == '×':
return '*'
if sym == '÷':
return '/'
return sym
class MathPanel(wx.Panel):
def __init__(self, p):
wx.Panel.__init__(self, parent=p, id=wx.ID_ANY)
math_bg_sizer = wx.BoxSizer(wx.VERTICAL)
math_bg_sizer.AddSpacer(5)
# 标题
self.Text1 = wx.StaticText(self, wx.ID_ANY, u"四则计算题", style=wx.ALIGN_CENTRE)
self.Text1.SetFont(wx.Font(35, 70, 90, 90, False, "微软雅黑"))
math_bg_sizer.Add(self.Text1, 3, wx.ALIGN_CENTER | wx.ALL, 5)
# 文字信息
self.Text2 = wx.StaticText(self, wx.ID_ANY, u"请选择需要计算题的范围", style=wx.ALIGN_CENTRE)
self.Text2.SetFont(wx.Font(20, 70, 90, 90, False, "微软雅黑"))
math_bg_sizer.Add(self.Text2, 3, wx.ALIGN_CENTER | wx.ALL, 5)
# 选择目录
choiceLabel = wx.BoxSizer(wx.HORIZONTAL)
choiceLabel.AddSpacer(237)
self.ques_num_range = wx.StaticText(self, wx.ID_ANY, u"题目数量")
choiceLabel.Add(self.ques_num_range, 1, wx.ALIGN_CENTER, 5)
self.num_range = wx.StaticText(self, wx.ID_ANY, u"数字范围")
choiceLabel.Add(self.num_range, 1, wx.ALIGN_CENTER, 5)
self.symbol = wx.StaticText(self, wx.ID_ANY, u"运算符")
choiceLabel.Add(self.symbol, 1, wx.ALIGN_CENTER, 5)
choiceLabel.AddSpacer(160)
math_bg_sizer.Add(choiceLabel, 1, wx.EXPAND, 5)
# 选择目录的按钮
choiceSizer = wx.BoxSizer(wx.HORIZONTAL)
choiceSizer.AddSpacer(200)
# 初始化choices
# 题目数量
self.num_choice = wx.SpinCtrl(self, wx.ID_ANY, style=wx.SP_ARROW_KEYS, min=1, max=100, initial=10)
choiceSizer.Add(self.num_choice, 1, wx.ALL, 5)
# 数字范围
self.range_choice = wx.SpinCtrl(self, wx.ID_ANY, style=wx.SP_ARROW_KEYS, min=10, max=200, initial=50)
choiceSizer.Add(self.range_choice, 1, wx.ALL, 5)
# 四则运算符
symbol_choiceChoices = ['+', '-', '×', '÷']
self.symbol_choice = wx.Choice(self, wx.ID_ANY, choices=symbol_choiceChoices)
self.symbol_choice.SetSelection(0)
choiceSizer.Add(self.symbol_choice, 1, wx.ALL, 5)
choiceSizer.AddSpacer(200)
math_bg_sizer.Add(choiceSizer, 1, wx.EXPAND, 5)
# 互动按钮
InteractSizer = wx.BoxSizer(wx.HORIZONTAL)
InteractSizer.AddSpacer(250)
# 绑定生成随机题目
self.generate_ques = wx.Button(self, wx.ID_ANY, u"生成题目")
InteractSizer.Add(self.generate_ques, 1, wx.ALL, 5)
self.generate_ques.Bind(wx.EVT_BUTTON, self.Generate_question)
# 绑定打印题目
self.print_ques = wx.Button(self, wx.ID_ANY, u"打印")
InteractSizer.Add(self.print_ques, 1, wx.ALL, 5)
self.print_ques.Bind(wx.EVT_BUTTON, self.Print_content)
# 绑定上传检查
self.photo_check = wx.Button(self, wx.ID_ANY, u"拍照检查")
InteractSizer.Add(self.photo_check, 0, wx.ALL, 5)
self.photo_check.Bind(wx.EVT_BUTTON, self.Check_start)
InteractSizer.AddSpacer(250)
math_bg_sizer.Add(InteractSizer, 1, wx.EXPAND, 5)
self.line1 = wx.StaticLine(self, wx.ID_ANY)
math_bg_sizer.AddSpacer(15)
math_bg_sizer.Add(self.line1, 0, wx.EXPAND | wx.ALL, 5)
math_bg_sizer.AddSpacer(15)
# 题目显示区域
self.question_content = []
self.answer_content = []
_label = u"89 + 32 = ? 72 + 67 = ?"
self.content_window = wx.SplitterWindow(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D)
self.content_window.SetSashPosition(0)
self.content_window.Bind(wx.EVT_IDLE, self.content_windowOnIdle)
self.scroller = wx.ScrolledWindow(self.content_window, id=wx.ID_ANY, style=wx.HSCROLL | wx.VSCROLL)
self.scroller.SetScrollRate(5, 5)
scroll_sizer = wx.BoxSizer(wx.VERTICAL)
self.content = wx.StaticText(self.scroller, id=wx.ID_ANY, style=wx.ALIGN_CENTRE)
self.content.SetFont(wx.Font(20, 70, 90, 90, False, "微软雅黑"))
self.content.SetLabel(_label)
scroll_sizer.Add(self.content, 0, wx.ALIGN_CENTER | wx.ALL, 5)
self.scroller.SetSizer(scroll_sizer)
self.scroller.Layout()
self.content_window.Initialize(self.scroller)
math_bg_sizer.Add(self.content_window, 12, wx.EXPAND, 0)
self.SetSizer(math_bg_sizer)
self.Layout()
math_bg_sizer.Fit(self)
def content_windowOnIdle(self, _):
self.content_window.SetSashPosition(0)
self.content_window.Unbind(wx.EVT_IDLE)
def Generate_question(self, _):
num = self.num_choice.GetValue()
max_num = self.range_choice.GetValue()
operators = symbol_check(self.symbol_choice.GetString(self.symbol_choice.GetSelection()))
self.question_content, self.answer_content = mQ.generate_questions(num, max_num, operators)
ques_content = ''
ind = True
for _ in self.question_content:
if ind:
ques_content += (_ + ' ')
else:
ques_content += (_ + '\n')
ind ^= True
self.content.SetLabel(ques_content)
def Print_content(self, _):
fig, ax = plt.subplots()
ax.axis('off')
ax.text(0.5, 0.5, '\n'.join(self.question_content), size=12, va='center', ha='center')
plt.show()
def Check_start(self, _):
app = wx.App(False)
check_frame = check_panel.CheckFrame(self)
check_frame.Show(True)
app.MainLoop()
def GetQuestion(self):
return self.question_content
def GetAnswer(self):
return self.answer_content
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。