制作了工具v2的工具面板

This commit is contained in:
weiye.wang 2023-07-08 20:30:45 +08:00
parent 20975be900
commit cf4c268fb0
10 changed files with 2210 additions and 518 deletions

View File

@ -1,5 +1,5 @@
id_string = "013298,014818,030516,030536,031162" id_string = "000001"
editor = "徐慧" editor = "王伟叶"

BIN
工具v2/logo.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -1,6 +1,6 @@
keywords_dict = { keywords_dict = {
"id":[""], #题号 "id":[""], #题号
"content":["两个"],"content2":["正态"], #题面内容 "content":["导数"], #题面内容
"objs":[""], #目标代码 "objs":[""], #目标代码
"tags":[""], #标签, 如["第二单元"]等 "tags":[""], #标签, 如["第二单元"]等
"genre":[""], #题目类型, 填空题, 选择题, 解答题 "genre":[""], #题目类型, 填空题, 选择题, 解答题

View File

@ -1,5 +1,5 @@
answeringfilepath = r"C:\Users\weiye\Documents\wwy sync\23届" # 要生成答案的路径 answeringfilepath = r"C:\Users\weiye\Documents\wwy sync\23届" # 要生成答案的路径
outputfilepath = "临时文件" # 输出文件路径 outputfilepath = "临时文件/23届" # 输出文件路径
from database_tools import * from database_tools import *

View File

@ -1,9 +1,9 @@
problems = ["1:50"] #题号列表, 每个字符串表示一个分块的题目
notetitle = "测试讲义" #讲义标题, 也是文件标题 notetitle = "测试讲义" #讲义标题, 也是文件标题
problems = ["1:10","20:25","20001:20005"] #题号列表, 每个字符串表示一个分块的题目
sectiontitles = ["课前","课后","附加"] #小节标题列表, 如果与题号列表长度不符则作为不设小节处理 sectiontitles = ["课前","课后","附加"] #小节标题列表, 如果与题号列表长度不符则作为不设小节处理
consecutivenumbering = False #不同小节是否连续编号, True表示连续编号, False表示每小节从1开始编号 consecutivenumbering = True #不同小节是否连续编号, True表示连续编号, False表示每小节从1开始编号
answered = True #是否展示答案, True表示展示答案, False表示不展示答案 answered = True #是否展示答案, True表示展示答案, False表示不展示答案
spaceflag = True #是否留空格, True表示留空格, False表示不留空格 spaceflag = False #是否留空格, True表示留空格, False表示不留空格

165
工具v2/工具面板.py Normal file
View File

@ -0,0 +1,165 @@
from tkinter import *
from subprocess import call
import os
root = Tk()
root.geometry('500x600')
root.title('题库0.3工具面板v2')
def temp():
pass
def generate_info(string):
outputstring = "暂无信息"
if string == "寻找空闲题号":
outputstring = '功能: 在题库中列出所有空闲题号.\n1. 按"运行STEP1"按钮后等若干秒, 在终端查看结果.'
elif string == "批量收录题目":
outputstring = '功能: 在一个.tex文件中找到\\item开头的题目并收录到题库.\n'+'0. 选中菜单项后会打开一个编辑窗口, 在编辑窗口中设置\n\t(1) 初始编号;\n\t(2) 题目来源(文件中的%开头的注释行的内容会依次作为此后题目来源的后缀);\n\t(3) .tex文件名(完整路径);\n\t(4) 收录日期及编辑者;\n\t(5) 是否对题目进行编号.\n'+'1. 编辑完成后按"运行STEP1"按钮后等若干秒, 在终端查看结果.'
return outputstring
def SetButton(string,openfilelist):
commandname.set(string)
LabelTool.config(text = string)
LabelInfo.config(text = generate_info(string))
button1.place(x = 10, y = 10)
button1.configure(bg = "green")
for f in openfilelist:
os.system("code -w "+f)
# 按钮STEP1执行的命令
def run_command1():
selectedtool = commandname.get()
call(["python",selectedtool+".py"])
LabelTool.config(text = selectedtool+"命令执行完毕")
button1.place_forget()
# 按钮STEP2执行的命令
# def run_command2():
# selectedtool = commandname.get()
# if selectedtool == "添加关联题目":
# call(["python","导入关联题目.py"])
# elif selectedtool == "修改题目数据库":
# call(["python","修改结果汇入.py"])
# elif selectedtool == "latex修改题目":
# call(["python","导入latex界面修改的题目内容.py"])
# LabelTool.config(text = selectedtool+ "STEP2命令执行完毕")
# button2.place_forget()
commandname = StringVar()
commandname.set("none")
LabelTool = Label(root, text = "请在菜单栏选择工具", height = 1, width = 40, anchor=NW)
LabelTool.place(x=10,y=100)
LabelInfo = Label(root, text = "工具提示信息", height = 20, width = 100, anchor = NW, justify = "left")
LabelInfo.place(x=10,y=140)
button1 = Button(root, text = "运行", command = run_command1)
# button2 = Button(root, text = "运行STEP2", command = run_command2)
# button3 = Button(root, text = "运行STEP3")
menubar = Menu(root)
# 设置 录入 菜单项
ImportMenu = Menu(menubar, tearoff = False)
menubar.add_cascade(label = "录入", menu = ImportMenu)
ImportMenu.add_command(label = "寻找空闲题号", command = lambda: SetButton("寻找空闲题号",[]))
ImportMenu.add_separator()
ImportMenu.add_command(label = "批量收录题目", command = lambda: SetButton("批量收录题目",["批量收录题目.py"]))
ImportMenu.add_command(label = "添加关联题目", command = lambda: SetButton("添加关联题目",["添加关联题目.py"]))
# 设置 维护 菜单项
MaintainenceMenu = Menu(menubar, tearoff = False)
menubar.add_cascade(label = "维护", menu = MaintainenceMenu)
MaintainenceMenu.add_command(label = "批量添加字段数据", command = lambda: SetButton("修改metadata",["文本文件/metadata.txt"]))
MaintainenceMenu.add_separator()
MaintainenceMenu.add_command(label = "LaTeX编辑题目答案及提示", command = lambda: SetButton("LaTeX编辑题目答案及提示",["latex编辑题目答案及提示.py"]))
MaintainenceMenu.add_command(label = "json编辑题目综合信息", command = lambda: SetButton("json编辑题目综合信息",["json编辑题目综合信息.py"]))
MaintainenceMenu.add_separator()
MaintainenceMenu.add_command(label = "合并使用记录并排序", command = lambda: SetButton("合并使用记录并排序",[]))
MaintainenceMenu.add_separator()
MaintainenceMenu.add_command(label = "统考数据导入", command = lambda: SetButton("统考数据导入",["统考数据导入.py"]))
MaintainenceMenu.add_command(label = "手动统计结果导入", command = lambda: SetButton("手动统计结果导入",["临时文件/手动统计结果.txt"]))
MaintainenceMenu.add_command(label = "转换手打答案至metadata", command = lambda: SetButton("转换手打答案至metadata",["转换手打答案至metadata.py"]))
MaintainenceMenu.add_separator()
MaintainenceMenu.add_command(label = "移除关联题号", command = lambda: SetButton("移除关联题号",["文本文件/metadata.txt"]))
MaintainenceMenu.add_separator()
MaintainenceMenu.add_command(label = "分类题号字典生成", command = lambda: SetButton("分类题号字典生成",["分类题号字典生成.py"]))
# 设置 使用 菜单项
UseMenu = Menu(menubar, tearoff = False)
menubar.add_cascade(label = "使用", menu = UseMenu)
UseMenu.add_command(label = "关键字筛选题号", command = lambda: SetButton("关键字筛选题号",["关键字筛选题号.py"]))
UseMenu.add_separator()
UseMenu.add_command(label = "学生讲义制作", command = lambda: SetButton("学生讲义制作",["学生讲义制作.py"]))
UseMenu.add_command(label = "教师讲义制作", command = lambda: SetButton("教师讲义制作",["教师讲义制作.py"]))
UseMenu.add_command(label = "批量讲义生成", command = lambda: SetButton("批量讲义生成",["批量讲义生成.py"]))
UseMenu.add_separator()
UseMenu.add_command(label = "文件夹题号清点", command = lambda: SetButton("文件夹题号清点",["文件夹题号清点.py"]))
UseMenu.add_command(label = "参考答案生成", command = lambda: SetButton("参考答案生成",["参考答案生成.py"]))
# UseMenu.add_command(label = "题号选题pdf生成", command = lambda: SetButton("题号选题pdf生成",1,["题号选题pdf生成.py"]))
# UseMenu.add_command(label = "批量题号选题pdf生成", command = lambda: SetButton("批量题号选题pdf生成",1,["批量生成题目pdf.py"]))
# 设置 备课组 菜单项
# BKZMenu = Menu(menubar, tearoff=False)
# menubar.add_cascade(label = "备课组材料相关", menu = BKZMenu)
# BKZMenu.add_command(label = "试卷答案生成", command = lambda: SetButton("试卷答案生成",1,["试卷答案生成.py"]))
# BKZMenu.add_command(label = "题号清单生成", command = lambda: SetButton("题号清单生成",1,["题号清单生成.py"]))
# BKZMenu.add_command(label = "已用题号剔除", command = lambda: SetButton("已用题号剔除",1,["已用题号剔除.py"]))
# BKZMenu.add_command(label = "寻找未赋答案题目", command = lambda: SetButton("寻找未赋答案题目",1,["寻找未赋答案题目.py"]))
# BKZMenu.add_command(label = "错题重做来源清点", command = lambda: SetButton("错题重做来源清点",1,["错题重做来源清点.py"]))
# BKZMenu.add_separator()
# BKZMenu.add_command(label = "备课草稿生成", command = lambda: SetButton("备课草稿生成",1,["备课草稿生成.py"]))
# BKZMenu.add_command(label = "备课讨论稿生成", command = lambda: SetButton("备课讨论稿生成",1,["备课讨论稿生成.py"]))
# 设置 目标及标签 菜单项
ObjTagMenu = Menu(menubar, tearoff = False)
menubar.add_cascade(label = "目标及标签", menu = ObjTagMenu)
ObjTagMenu.add_command(label = "课时名和课时目标制作", command = lambda: SetButton("课时名和课时目标制作",["课时名和课时目标制作.py"]))
# ObjTagMenu.add_command(label = "单元标记转换", command = lambda: SetButton("单元标记转换",1,["单元标记转换.py"]))
# ObjTagMenu.add_separator()
# ObjTagMenu.add_command(label = "目标表体生成", command = lambda: SetButton("目标表体生成",1,["根据范围提取课时目标.py"]))
# ObjTagMenu.add_command(label = "目标pdf生成", command = lambda: SetButton("目标pdf生成",1,["课时目标pdf生成.py"]))
# ObjTagMenu.add_command(label = "课时目标寻找题目", command = lambda: SetButton("课时目标寻找题目",1,["课时目标寻找题目.py"]))
# ObjTagMenu.add_command(label = "课时目标划分信息汇总", command = lambda: SetButton("课时目标划分信息汇总",1,[]))
# ObjTagMenu.add_separator()
# ObjTagMenu.add_command(label = "目标挂钩基础清点", command = lambda: SetButton("目标挂钩清点",1,[]))
# ObjTagMenu.add_command(label = "目标清点及清单生成", command = lambda: SetButton("目标清点及清单生成",1,[]))
# 设置 相同相似比对 菜单项
SimRelMenu = Menu(menubar, tearoff= False)
menubar.add_cascade(label = "相同相似", menu = SimRelMenu)
# SimRelMenu.add_command(label = "新题相似相同比对", command = lambda: SetButton("新题相似相同比对",1,["新题相似相同比对.py"]))
# SimRelMenu.add_separator()
# SimRelMenu.add_command(label = "局部相似题目检测", command = lambda: SetButton("局部相似题目检测",1,["局部相似题目检测.py"]))
# SimRelMenu.add_command(label = "相同相似题目标注", command = lambda: SetButton("相同相似题目标注",1,["相同相似题目标注.py"]))
# SimRelMenu.add_separator()
# SimRelMenu.add_command(label = "全局未标注相同题目检测", command = lambda: SetButton("全局未标注相同题目检测",1,[]))
# 设置 其他 菜单项
OtherMenu = Menu(menubar, tearoff = False)
menubar.add_cascade(label = "其他", menu = OtherMenu)
# OtherMenu.add_command(label = "剪贴板mathpix预处理", command = lambda: SetButton("mathpix预处理",1,[]))
# OtherMenu.add_command(label = "剪贴板带圈数字处理", command = lambda: SetButton("带圈数字处理",1,[]))
# OtherMenu.add_command(label = "剪贴板表格整理", command = lambda: SetButton("剪贴板表格整理",1,[]))
# OtherMenu.add_command(label = "剪贴板单选变多选", command = lambda: SetButton("剪贴板单选变多选",1,[]))
menubar.add_command(label = "退出", command = root.destroy)
root.config(menu = menubar)
# root.attributes("-topmost",1)
root.iconbitmap("logo.ico")
root.mainloop()

View File

@ -1,9 +1,17 @@
problems = ["1:500"] #题号列表, 每个字符串表示一个分块的题目 problems = ["1:5","10:15"] #题号列表, 每个字符串表示一个分块的题目
notetitle = "测试讲义教师版" #讲义标题, 也是文件标题 notetitle = "测试讲义教师版" #讲义标题, 也是文件标题
sectiontitles = ["课前","课后"] #小节标题列表, 如果与题号列表长度不符则作为不设小节处理 sectiontitles = ["课前","课后"] #小节标题列表, 如果与题号列表长度不符则作为不设小节处理
consecutivenumbering = False #不同小节是否连续编号, True表示连续编号, False表示每小节从1开始编号 consecutivenumbering = True #不同小节是否连续编号, True表示连续编号, False表示每小节从1开始编号
topandbottomusagestuple = (2,0) #表示保留得分率最高的使用记录与最低的使用记录的个数, 有负数表示不排列 topandbottomusagestuple = (3,3) #表示保留得分率最高的使用记录与最低的使用记录的个数, 有负数表示不排列
showobjs = True #是否显示目标, True为显示, False为不显示
showtags = True #是否显示目标, True为显示, False为不显示
showans = True #是否显示目标, True为显示, False为不显示
showsolution = True #是否显示目标, True为显示, False为不显示
showusages = True #是否显示目标, True为显示, False为不显示
showorigin = True #是否显示目标, True为显示, False为不显示
showremark = True #是否显示目标, True为显示, False为不显示
sectionname = "section" #按何种名称分组, 可选section, subsection, chapter等
from database_tools import * from database_tools import *
@ -26,7 +34,7 @@ if sys.platform != "win32": #非win系统用默认字体
bodystring = GenerateTeacherBodyString(problems,sectiontitles,pro_dict,obj_dict,consecutivenumbering,topandbottomusagestuple) #生成.tex中的内容主体字符串, 用于替换模板中的相应部分 bodystring = GenerateTeacherBodyString(problems,sectiontitles,pro_dict,obj_dict,sectionname=sectionname, consecutivenumbering=consecutivenumbering, topandbottomusagestuple = topandbottomusagestuple, showobjs = showobjs, showtags = showtags, showans = showans, showsolution = showsolution, showusages = showusages, showorigin = showorigin, showremark = showremark) #生成.tex中的内容主体字符串, 用于替换模板中的相应部分
latex_data = StringSubstitute(r"<<[\s\S]*?待替换[\s\S]*?>>",latex_raw,(notetitle,bodystring)) #替换标题和bodystring latex_data = StringSubstitute(r"<<[\s\S]*?待替换[\s\S]*?>>",latex_raw,(notetitle,bodystring)) #替换标题和bodystring
SaveTextFile(latex_data,outputfilepath) #保存.tex文件 SaveTextFile(latex_data,outputfilepath) #保存.tex文件

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
old_ids = "1,10000" # 需要添加关联题目的id字符串 old_ids = "1,10000" # 需要添加关联题目的id字符串
new_ids = "22127:50000" # 目的地的id字符串, 其中空闲位置需不少于old_ids中的题目数量 new_ids = "50000:60000" # 目的地的id字符串, 其中空闲位置需不少于old_ids中的题目数量
editor = "王伟叶" # 修改人姓名 editor = "王伟叶" # 修改人姓名
from database_tools import * from database_tools import *

View File

@ -1,4 +1,4 @@
metadatafilepath = "文本文件/metadata.txt" metadatafilepath = "文本文件/metadata.txt" #输入为一个字符串, 每行表示一对题号, 用空格或制表符隔开
from database_tools import * from database_tools import *