网站首页 > 技术文章 正文
程序一:
# 导入需要的模块
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新手狂喜!网友:就服气它
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)