利用deepseek写个点名器,分分钟的事儿

因为课堂上常常需要对学生需要点名提问,激发学生学习的动力,于是便在网上找了几个点名器,但都并非想象中的样子,于是便琢磨起来,不如自己做一个。

想到就干,我便直接向deepseek提出了做点名器的想法和一些要求,然后它直接给我生成了一个可以使用的点名器

以下是一个使用Python Tkinter实现的随机点名器,支持数字快捷按钮和文件读取功能:

使用说明:

  1. 将学生名单按行保存在同目录的students.txt文件中
  2. 运行程序后会显示主界面
  3. 可以直接输入数字或点击数字按钮选择要提问的人数
  4. 点击”开始抽选”按钮后会弹出新窗口显示结果

功能特点:

  • 自动检测名单文件是否存在
  • 输入验证(必须是有效数字且在合理范围内)
  • 数字快捷按钮(1-8)快速输入
  • 独立结果显示窗口
  • 支持UTF-8编码文件
  • 防止重复抽选(使用random.sample)
  • 错误处理机制

注意:如果要修改名单文件路径,可以修改read_names函数中的filename参数。

代码如下:

import tkinter as tk
from tkinter import messagebox
import random

def read_names(filename=’students.txt’):
    try:
        with open(filename, ‘r’, encoding=’utf-8′) as f:
            names = [line.strip() for line in f.readlines() if line.strip()]
        return names
    except FileNotFoundError:
        messagebox.showerror(“错误”, f”找不到文件{filename}!”)
        return []

class RandomPicker:
    def __init__(self, master):
        self.master = master
        self.names = read_names()
       
        if not self.names:
            master.destroy()
            return

        master.title(“随机点名器”)
        master.geometry(“300×250”)

        # 创建界面组件
        self.create_widgets()

    def create_widgets(self):
        # 输入提示
        self.label = tk.Label(self.master, text=”请输入提问人数:”)
        self.label.pack(pady=5)

        # 输入框
        self.entry = tk.Entry(self.master, width=20)
        self.entry.pack(pady=5)

        # 数字按钮框架
        btn_frame = tk.Frame(self.master)
        btn_frame.pack(pady=10)

        # 创建1-8数字按钮
        for i in range(1, 9):
            btn = tk.Button(btn_frame, text=str(i), width=3,
                            command=lambda num=i: self.set_number(num))
            btn.grid(row=(i-1)//4, column=(i-1)%4, padx=2, pady=2)

        # 确定按钮
        self.confirm_btn = tk.Button(self.master, text=”开始抽选”,
                                   command=self.start_pick)
        self.confirm_btn.pack(pady=10)

    def set_number(self, number):
        “””设置提问人数”””
        self.entry.delete(0, tk.END)
        self.entry.insert(0, str(number))

    def start_pick(self):
        “””开始随机抽选”””
        # 验证输入
        try:
            num = int(self.entry.get())
            if num <= 0 or num > len(self.names):
                raise ValueError
        except ValueError:
            messagebox.showerror(“输入错误”,
                               f”请输入1到{len(self.names)}之间的有效数字!”)
            return

        # 随机抽选
        selected = random.sample(self.names, num)
       
        # 显示结果
        result_window = tk.Toplevel(self.master)
        result_window.title(“抽选结果”)
       
        text = tk.Text(result_window, width=30, height=10)
        text.pack(padx=10, pady=10)
       
        text.insert(tk.END, “被抽中的学生:\n\n” + “\n”.join(selected))
        text.config(state=tk.DISABLED)

if __name__ == “__main__”:
    root = tk.Tk()
    app = RandomPicker(root)
    root.mainloop()

在已经安装了Python环境和相关依赖的电脑里,直接粘贴到文档里,改一下扩展名为.py,将准备好的students.txt文件放入同目录下,直接运行就行了

然而我并不满足,在这个基础上又问增加了一些内容,经过一段时间的增增减减,修修改改,并在实际生活中的使用和调整,如今,终于可以面世了。

图片[1]-利用deepseek写个点名器,分分钟的事儿-时间手札

主要功能如下:

1、随机点名

在主界面的点击数字按钮将想要提问的人数,即可实现随机点名默认为1人,可多人,超过9人需要点击输入框用专用虚拟键盘输入两位数

图片[2]-利用deepseek写个点名器,分分钟的事儿-时间手札

开始点名后会弹出一个半透明窗口,并以走马灯样式展示人名,最后随机展示相应的人名

图片[3]-利用deepseek写个点名器,分分钟的事儿-时间手札
图片[4]-利用deepseek写个点名器,分分钟的事儿-时间手札
图片[5]-利用deepseek写个点名器,分分钟的事儿-时间手札

2、积分功能

点击主界面上的功能按钮可以对你所布置的任务进行评分并进行积分实时排名

图片[6]-利用deepseek写个点名器,分分钟的事儿-时间手札
图片[7]-利用deepseek写个点名器,分分钟的事儿-时间手札
图片[8]-利用deepseek写个点名器,分分钟的事儿-时间手札
图片[9]-利用deepseek写个点名器,分分钟的事儿-时间手札

3、记录查看和保存

所有评分记录均会自动以TXT格式和csv格式保存在主程序目录下,方便随时查看

图片[10]-利用deepseek写个点名器,分分钟的事儿-时间手札
图片[11]-利用deepseek写个点名器,分分钟的事儿-时间手札

4、添加和修改新项目

支持自定义项目和导入Excel中的项目,注意要放在第一列

图片[12]-利用deepseek写个点名器,分分钟的事儿-时间手札
图片[13]-利用deepseek写个点名器,分分钟的事儿-时间手札
图片[14]-利用deepseek写个点名器,分分钟的事儿-时间手札

5、悬浮球功能

主界面点击关闭按钮即可以将主界面隐藏,以悬浮球形态悬浮在桌面以供调用,再次点击将出现在屏幕右下角,不影响PPT使用

图片[15]-利用deepseek写个点名器,分分钟的事儿-时间手札

实际操作视频请移步知乎

下载地址:

蓝奏云:点名评分工具

https://wwvv.lanzoub.com/ipKDL2rak7ah?w1

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容