分享一下我的Python实验报告和经验之(二)——随机点名系统

随机点名人们都会遇到随机抽号或者随机点名的场景,利用Python可以方便地实现一个这样的系统。很多时候,课堂上老师想随机抽取一位同学回答问题,界面设置有开始和停止按钮,学生名单存储在一个txt文本文件中点击开始按钮,名字快速的随机跳动,点击停止按钮,出现一个随机选取的学生姓名。再次点击开始按钮可以进行新一轮的随机抽号的过程,系统实现界面如下图所示。

 

import tkinter as tk
import random
import time
from threading import Thread

class RandomNamePicker:
    def __init__(self, root):
        self.root = root
        self.root.title("随机点名系统")
        self.root.geometry("500x300")
        self.root.configure(bg='lightgrey')

        self.names = self.load_names()
        self.running = False

        # 标题
        self.title_label = tk.Label(self.root, text="课堂随机点名", font=('Arial', 24), bg='darkgrey', fg='yellow')
        self.title_label.pack(fill=tk.X, pady=10)

        # 左边按钮框架
        self.button_frame = tk.Frame(self.root, bg='lightgrey')
        self.button_frame.pack(side=tk.LEFT, padx=20, pady=20)

        self.start_button = tk.Button(self.button_frame, text="开始", font=('Arial', 16), command=self.start)
        self.start_button.pack(pady=10)

        self.stop_button = tk.Button(self.button_frame, text="停止", font=('Arial', 16), command=self.stop)
        self.stop_button.pack(pady=10)

        # 右边名字显示框架
        self.display_frame = tk.Frame(self.root, bg='lightgrey')
        self.display_frame.pack(side=tk.RIGHT, padx=20, pady=20, expand=True)

        self.label = tk.Label(self.display_frame, text="", font=('Arial', 36), fg='red', bg='lightgrey')
        self.label.pack(pady=50)

    def load_names(self):
        with open("students.txt", "r", encoding="utf-8") as file:
            names = file.readlines()
        return [name.strip() for name in names]

    def start(self):
        self.running = True
        self.thread = Thread(target=self.random_name)
        self.thread.start()

    def stop(self):
        self.running = False
        self.thread.join()

    def random_name(self):
        while self.running:
            name = random.choice(self.names)
            self.label.config(text=name)
            time.sleep(0.1)

if __name__ == "__main__":
    root = tk.Tk()
    app = RandomNamePicker(root)
    root.mainloop()

 不过,还需要在这个代码所在的文件下写一个文本文档

代码解析:

确保students.txt文件与Python脚本在同一目录下,并包含学生名单。

运行Python代码。点击“开始”按钮,名字会快速随机跳动。点击“停止”按钮,显示一个随机选取的学生姓名。再次点击“开始”按钮可以进行新一轮的随机抽号过程。

导入必要的库:

tkinter:用于创建图形用户界面。

random:用于随机选择学生名字。

time:用于控制名字跳动的速度。

threading.Thread:用于在单独的线程中运行随机名字跳动的逻辑。

类定义:

RandomNamePicker类初始化时设置界面标题、尺寸和背景颜色。

load_names方法从students.txt文件中读取学生名单。

start方法启动一个新线程来执行random_name方法。

stop方法停止随机名字跳动,并等待线程结束。

random_name方法在running标志为True时不断随机选择名字并更新显示。

主程序:

创建主窗口并实例化RandomNamePicker类。

进入主事件循环。

今天就到这里啦!!!希望大家都不挂科!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值