【亲测有效】【源码】抽奖程序2.0 支持.txt文件导入 自动识别多种编码格式 实时显示导入人数 重复抽奖不限制次数 永久保留记录



以下是对代码的详细解释及功能罗列:
一、代码结构解析
1. 依赖导入
import tkinter as tk
from tkinter import filedialog, messagebox
import random
import datetime
tkinter:Python标准GUI库,用于创建界面filedialog:文件选择对话框messagebox:弹窗提示框random:实现随机抽选datetime:获取抽奖时间
2. 界面初始化
root = tk.Tk()
root.title("幸运抽奖程序")
root.geometry("600x400")
- 创建600x400像素的主窗口
- 设置窗口标题
3. 数据存储
participants = [] # 当前参与者名单
history = [] # 历史抽奖记录
4. 界面组件
| 组件 | 类型 | 作用 |
|---|---|---|
| btn_import | 按钮 | 触发文件导入 |
| lbl_count | 标签 | 显示当前导入人数 |
| btn_lottery | 按钮 | 启动抽奖 |
| lbl_result | 标签 | 显示本次抽奖结果 |
| listbox_history | 列表框 | 展示历史记录(带滚动条) |
二、核心功能说明
1. 文件导入系统
def import_file():
encodings = ['utf-8', 'gbk', 'gb18030', 'big5', 'latin-1']
# 尝试不同编码...
- 支持编码:
- UTF-8(推荐)
- GBK(简体中文Windows)
- GB18030(最新国标)
- Big5(繁体中文)
- Latin-1(最终回退)
- 文件处理:
- 自动过滤空行和空白字符
- 实时更新人数显示
- 大文件优化(生成器表达式)
2. 抽奖逻辑
def draw_lottery():
winner = random.choice(participants)
# 记录时间并更新界面...
- 随机选择机制:
random.choice - 时间戳格式:
2023-07-20 15:30:00 - 历史记录排序:最新记录置顶
3. 异常处理体系
try:
# 文件操作...
except UnicodeDecodeError:
# 编码错误处理...
except Exception as e:
# 通用错误处理...
- 分级错误提示:
- 解码失败时自动尝
代码学习,前言技术分享,深度分析编程技术,普及科普编程技术,天天都要敲代码

浙公网安备 33010602011771号