网站首页 > 技术文章 正文
程序一:
# 导入需要的模块
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()
运行后的效果:
- 上一篇: 交互思考:文本框字数限制
- 下一篇: 实现一个超有趣的 Material-UI 风格 Input 框
猜你喜欢
- 2024-12-03 137.Python——PySide6:QInputDialog输入对话框的创建与使用
- 2024-12-03 云中忆低代码之【开关】组件
- 2024-12-03 微信8.0.28正式更新!发现6个实用功能,朋友圈新增访问权限
- 2024-12-03 Word文档如何不显示回车符?让你的文档更美观
- 2024-12-03 「Excel技巧」恼人的数据透视表之怎么去掉(空白)
- 2024-12-03 随手写个接口测试工具,让领导瞧瞧我的能耐
- 2024-12-03 topjui easyui:combobox(下拉列表应用)
- 2024-12-03 学会这两招,PS换行不求人!轻松实现文本排版,小白也能秒变高手
- 2024-12-03 如何在Excel中使用斜线,并在表格的标题中使用单斜线或双斜线
- 2024-12-03 哇塞!这款PPT插件简直太OK了!PPT新手狂喜!网友:就服气它
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 532℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 495℃MySQL service启动脚本浅析(r12笔记第59天)
- 474℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 472℃启用MySQL查询缓存(mysql8.0查询缓存)
- 452℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 431℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 428℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)