Compare commits

..

2 Commits

Author SHA1 Message Date
1acd1b7fd4
fix text 2024-06-22 21:54:28 +08:00
2100d63d64
add jumping number when drawing 2024-06-22 21:52:57 +08:00

30
main.py

@ -15,6 +15,8 @@ DEFAULT_MAX_ID = 45
PASSWORD = "Admin@123" PASSWORD = "Admin@123"
selected_ids = [] selected_ids = []
is_running = False
job = None
# 注册表工具函数 # 注册表工具函数
@ -111,7 +113,6 @@ def generate_random_id(selected_ids, allow_repeat, min_id, max_id):
else: else:
return random.randint(min_id, max_id) return random.randint(min_id, max_id)
# 更新历史记录列表 # 更新历史记录列表
def update_history_list(): def update_history_list():
global history_list global history_list
@ -120,22 +121,35 @@ def update_history_list():
for id, timestamp in selected_ids: for id, timestamp in selected_ids:
history_list.insert(tk.END, f"{id} ({timestamp})") history_list.insert(tk.END, f"{id} ({timestamp})")
# 每隔 5 毫秒更新一次显示的随机学号
def update_number(allow_repeat, min_id, max_id):
global job
if is_running:
random_id = generate_random_id(selected_ids, allow_repeat, min_id, max_id)
label.config(text=str(random_id))
job = root.after(5, update_number, allow_repeat, min_id, max_id)
# 抽取学号按钮点击事件处理函数 # 抽取学号按钮点击事件处理函数
def draw_student_id(): def draw_student_id():
global selected_ids global is_running, job, selected_ids
load_selected_ids()
allow_repeat, min_id, max_id = load_settings() allow_repeat, min_id, max_id = load_settings()
id = generate_random_id(selected_ids, allow_repeat, min_id, max_id)
if id is not None: if is_running:
# 停止跳动,保存最终学号
root.after_cancel(job)
id = label.cget("text")
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
label.config(text=str(id), font=("宋体", 50))
selected_ids.append((str(id), timestamp)) selected_ids.append((str(id), timestamp))
save_selected_ids() save_selected_ids()
if settings_window: if settings_window:
update_history_list() update_history_list()
button.config(text="开始")
is_running = False
else: else:
label.config(text="已抽完所有学号", font=("宋体", 30)) # 开始跳动
is_running = True
button.config(text="停止")
update_number(allow_repeat, min_id, max_id)
# 设置按钮点击事件处理函数 # 设置按钮点击事件处理函数
@ -310,7 +324,7 @@ label = tk.Label(root, text="", font=("宋体", 50))
label.pack(pady=20, padx=20) label.pack(pady=20, padx=20)
# 创建抽取学号按钮 # 创建抽取学号按钮
button = tk.Button(root, text="抽取学号", font=("宋体", 12), command=draw_student_id) button = tk.Button(root, text="开始", font=("宋体", 12), command=draw_student_id)
button.pack(pady=10) button.pack(pady=10)
# 创建设置按钮 # 创建设置按钮