优秀的编程知识分享平台

网站首页 > 技术文章 正文

使用PYTHON编程实现抽签程序

nanyue 2024-12-03 17:07:27 技术文章 8 ℃

程序一:

# 导入需要的模块
import openpyxl
import random
import tkinter as tk

# 读取Excel文件中的名单,返回一个列表
def get_name_list(filename):
    workbook = openpyxl.load_workbook(filename)
    sheet = workbook.active
    name_list = []
    for row in range(2, sheet.max_row + 1):
        name = sheet.cell(row, 2).value
        if name:
            name_list.append(name)
    return name_list

# 随机抽取n个名字,返回一个列表
def draw_names(name_list, n):
    return random.sample(name_list, n)

# 主函数
def main():
    # 获取名单列表
    name_list = get_name_list("list.xlsx")
    # 创建GUI窗口
    window = tk.Tk()
    window.title("随机抽签程序")
    window.geometry("300x300")
    # 创建输入框,用于输入抽签人数
    input_label = tk.Label(window, text="请输入抽签人数:")
    input_label.pack()
    input_entry = tk.Entry(window)
    input_entry.pack()
    
    # 定义一个函数,用于显示抽签结果
    def show_result(event=None):
        draw_list = draw_names(name_list, int(input_entry.get()))
        result = "\n".join(draw_list)
        result_text.delete(1.0, tk.END) # 清空文本框内容
        result_text.insert(tk.END, result) # 插入新的结果

    # 创建按钮,用于开始抽签
    draw_button = tk.Button(window, text="开始抽签", command=show_result)
    draw_button.pack()
    
    # 创建滑动框和文本框,用于显示抽签结果
    scrollbar = tk.Scrollbar(window) # 创建滑动框组件
    scrollbar.pack(side=tk.RIGHT, fill=tk.Y) # 将滑动框放在右侧,并填充纵向空间
    result_text = tk.Text(window, yscrollcommand=scrollbar.set) # 创建文本框组件,并绑定滑动框的命令
    result_text.pack(fill=tk.BOTH) # 将文本框填充窗口的剩余空间
    scrollbar.config(command=result_text.yview) # 设置滑动框的控制对象为文本框
    
    # 绑定回车键和show_result函数
    input_entry.bind("<Return>", show_result)

    # 运行窗口
    window.mainloop()

# 调用主函数
if __name__ == "__main__":
    main()

运行后的效果:

程序二

import pandas as pd
import random
import PySimpleGUI as sg

# 从Excel文件中读取名称列表
df = pd.read_excel('list.xlsx')
names = df['name'].tolist()

# 定义GUI布局
layout = [[sg.Text('按下“点名”按钮随机点名')],
          [sg.Text(size=(20,1), key='-OUTPUT-')],
          [sg.Button('点名'), sg.Button('退出')]]

# 创建GUI窗口
window = sg.Window('点名程序', layout)

# 主程序循环
while True:
    event, values = window.read()

    # 如果用户关闭窗口或点击退出按钮,则退出程序
    if event == sg.WIN_CLOSED or event == '退出':
        break

    # 如果用户点击“点名”按钮,则随机点名
    if event == '点名':
        name = random.choice(names)
        window['-OUTPUT-'].update(name)

# 关闭GUI窗口
window.close()

运行后的效果:

最近发表
标签列表