神剑山庄资源网 Design By www.hcban.com
代码如下所示:
import datetime import json import os import random import tkinter as tk import openpyxl # 花名册文件名 excel_file_path = "花名册.xlsx"#需在当前目录创建对应花名册.xlsx # 工作表名 excel_sheet = "Sheet1" # 记录存储文件名 file_path = "name_record.json" #封装业务逻辑 class Call_Name: # 私有化变量 _namelist = None # 读取花名册 def __init__(self): wb = openpyxl.load_workbook(excel_file_path) get_sheet = wb[excel_sheet] list_data = [] first_row = True try: for row in get_sheet: # 忽略首行 if first_row: first_row = False continue # 读取第一个单元格数据 for lab in row: list_data.append(lab.value) break except: list_data = ['空名单?'] self._namelist = list_data # 初始化记录 def _re_reset(self): # 记录使用日期 dls = [] dy = str(datetime.datetime.today().date()) dls.append(dy) # 记录点名 record = {} for i in self._namelist: record[i] = 0 name_record = {"date": dls, "last_use": dy, "record": record} return name_record # 创建记录 def mk_record(self): jf_dict = self._re_reset() with open(file=file_path, mode='w', encoding='utf-8') as jf: json.dump(jf_dict, jf, indent=2, sort_keys=True, ensure_ascii=False) # 读取记录 def read_record(self): with open(file=file_path, mode='r', encoding='utf-8') as jf: jf_data = json.load(jf) return jf_data # 产生随机姓名 def call_name(self): ll = len(self._namelist) num = random.randint(1, ll) call_name = self._namelist[num - 1] return call_name # 修改记录-----warning!!! def re_mod(self, name=None, re_date=None): jf_data = self.read_record() record = jf_data["record"] use_date = list(jf_data["date"]) if name: v = record[name] + 1 jf_data["record"][name] = v if re_date: use_date.append(re_date) jf_data["date"] = use_date jf_data["last_use"] = re_date with open(file=file_path, mode='w', encoding='utf-8') as jf: json.dump(jf_data, jf, indent=2, sort_keys=True, ensure_ascii=False) # 获取记录次数 def re_times(self): times_list = [] record = self.read_record()["record"] for k, v in record.items(): times_list.append(v) return times_list # 返回记录次数 # 获取被点到成员记录次数 def call_times(self, name): record = self.read_record()["record"] return record[name] #封装事件 class ForGUI: # 初始化 re_date = None def __init__(self): try: cname = Call_Name() except: msg["text"] = "未找到:%s" % excel_file_path msg.update() else: try: record = cname.read_record() # 读取记录 except: cname.mk_record() # 读取异常则重新创建记录 record = cname.read_record() self.re_date = record["date"] # 获取使用日期记录 # 每5天初始化一次记录 if len(self.re_date) > 5: cname.mk_record() # 重新创建记录 # 开始点名,输出有效姓名:姓名对应记录不为最大次数 def start(self): cname = Call_Name() times = cname.re_times() # 获取记录次数 max_times = max(times) # 获取记录最大次数 min_times = min(times) # 获取记录最小次数 td = str(datetime.datetime.today().date()) # 获取当前日期 if not td in self.re_date: cname.re_mod(re_date=td) while True: name = cname.call_name() # 产生随机姓名 times = cname.call_times(name) # 获取被点到成员记录次数 if max_times != min_times: if times != max_times: cname.re_mod(name=name) # 修改记录 msg["text"] = name msg.update() break else: continue else: cname.re_mod(name=name) # 修改记录 msg["text"] = name msg.update() break # 查看花名册 def open_name_excel(self): try: os.system("start %s&exit" % excel_file_path) except: msg["text"] = '\n未找到花名册╮(╯▽╰)╭\n' msg["font"] = ('', 18) msg.update() # 查看点名记录 def open_record(self): try: os.system("start %s&exit" % file_path) except: msg["text"] = '\n未找到点名记录╮(╯▽╰)╭\n' msg["font"] = ('', 18) msg.update() # 获取花名册名单 def get_name_list(self): try: wb = openpyxl.load_workbook(excel_file_path) get_sheet = wb[excel_sheet] except: msg["text"] = "未找到:%s" % excel_file_path msg.update() else: list_data = [] first_row = True for row in get_sheet: # 忽略首行 if first_row: first_row = False continue # 读取第一个单元格数据 for lab in row: list_data.append(lab.value) break return list_data # 创建窗口 root = tk.Tk(className="点名工具") # 设置窗口大小 setWidth = 300 setHeight = 180 # 获取屏幕分辨率 screenWidth = root.winfo_screenwidth() screenHeight = root.winfo_screenheight() x = int((screenWidth - setWidth) / 2) y = int((screenHeight - setHeight) / 2) # 设置窗口初始位置屏幕居中 root.geometry("%sx%s+%s+%s" % (setWidth, setHeight, x, y)) # 设置窗口宽高固定 root.resizable(0, 0) # 创建菜单栏 m1 = tk.Menu(root, tearoff=False) # 创建子菜单,不显示分窗 MenuBar = tk.Menu(m1, tearoff=False) MenuBar.add_command(label='查看名单', command=ForGUI().open_name_excel) MenuBar.add_command(label='查看记录', command=ForGUI().open_record) MenuBar.add_command(label='清空记录', command=Call_Name().mk_record) # 将子菜单加入菜单栏中 m1.add_cascade(label='选项', menu=MenuBar) m1.add_command(label='Exit', command=root.quit) # 将菜单栏添加到窗口 root.config(menu=m1) # 创建文本显示 f1 = tk.Frame(root, bd=1, height=150, width=200) pass f1.pack(pady=10) msg = tk.Label(f1, text="\n别紧张(●ˇ", fg="green") # 创建文本控件 msg.pack(pady=10) msg["font"] = ('', 18) f2 = tk.Frame(root) f2.pack(pady=10) # 循环随机显示花名册名单 name_list = ForGUI().get_name_list() def info(): t = random.randint(1, len(name_list)) msg["font"] = ('', 44) msg["text"] = (name_list[t - 1]) def bt_listen(): while bt["state"] == 'normal': bt['command'] = bt_start bt['text'] = "就决定是你了" root.after(500, info) bt.update() if bt['text'] == "开始": break def bt_start(): bt['command'] = bt_listen bt['text'] = "开始" fg = ForGUI() root.after(500, fg.start) bt.update() # 创建开始按钮 bt = tk.Button(f2, text='开始点名喽', stat="normal", command=bt_listen, bd=4, width=20, font=18) bt.pack() root.mainloop()
总结
神剑山庄资源网 Design By www.hcban.com
神剑山庄资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
神剑山庄资源网 Design By www.hcban.com
暂无基于python tkinter的点名小程序功能的实例代码的评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月17日
2024年11月17日
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】