电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

基于python tkinter的點名小程序功能的實例代碼

瀏覽:2日期:2022-07-13 13:15:11

代碼如下所示:

import datetimeimport jsonimport osimport randomimport tkinter as tkimport 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 = 300setHeight = 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)passf1.pack(pady=10)msg = tk.Label(f1, text='n別緊張(●ˇ∀ˇ●)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’] == '開始': breakdef 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()

總結

到此這篇關于基于python tkinter的點名小程序功能的實例代碼的文章就介紹到這了,更多相關python tkinter點名小程序內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 实战IT培训机构_IT培训班选大学生IT技术培训中心_中公优就业 | 不锈钢拉手厂家|浴室门拉手厂家|江门市蓬江区金志翔五金制品有限公司 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 磁力抛光研磨机_超声波清洗机厂家_去毛刺设备-中锐达数控 | 百度关键词优化_网站优化_SEO价格 - 云无限好排名 | 购买舔盐、舔砖、矿物质盐压块机,鱼饵、鱼饲料压块机--请到杜甫机械 | 海尔生物医疗四川代理商,海尔低温冰箱四川销售-成都壹科医疗器械有限公司 | 泰来华顿液氮罐,美国MVE液氮罐,自增压液氮罐,定制液氮生物容器,进口杜瓦瓶-上海京灿精密机械有限公司 | 大流量卧式砂磨机_强力分散机_双行星双动力混合机_同心双轴搅拌机-莱州市龙跃化工机械有限公司 | 滑石粉,滑石粉厂家,超细滑石粉-莱州圣凯滑石有限公司 | 医用酒精_84消毒液_碘伏消毒液等医用消毒液-漓峰消毒官网 | 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 海南在线 海南一家 | 淬火设备-钎焊机-熔炼炉-中频炉-锻造炉-感应加热电源-退火机-热处理设备-优造节能 | 春腾云财 - 为企业提供专业财税咨询、代理记账服务 | 中天寰创-内蒙古钢结构厂家|门式刚架|钢结构桁架|钢结构框架|包头钢结构煤棚 | 苏州西装定制-西服定制厂家-职业装定制厂家-尺品服饰西装定做公司 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 玻璃钢型材_拉挤模具_玻璃钢拉挤设备——滑县康百思 | 飞飞影视_热门电影在线观看_影视大全 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 特种阀门-调节阀门-高温熔盐阀-镍合金截止阀-钛阀门-高温阀门-高性能蝶阀-蒙乃尔合金阀门-福建捷斯特阀门制造有限公司 | 防伪溯源|防窜货|微信二维码营销|兆信_行业内领先的防伪防窜货数字化营销解决方案供应商 | 液氮罐(生物液氮罐)百科-无锡爱思科| 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 食药成分检测_调料配方还原_洗涤剂化学成分分析_饲料_百检信息科技有限公司 | 质构仪_鱼糜弹性仪-上海腾拔仪器科技有限公司 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 水厂自动化|污水处理中控系统|水利信息化|智慧水务|智慧农业-山东德艾自动化科技有限公司 | 平面钻,法兰钻,三维钻-山东兴田阳光智能装备股份有限公司 | 食品质构分析仪-氧化诱导分析仪-瞬态法导热系数仪|热冰百科 | IPO咨询公司-IPO上市服务-细分市场研究-龙马咨询 | 超声波清洗机_细胞破碎仪_实验室超声仪器_恒温水浴-广东洁盟深那仪器 | 河南包装袋厂家_河南真空袋批发价格_河南服装袋定制-恒源达包装制品 | 广州工业氧气-工业氩气-工业氮气-二氧化碳-广州市番禺区得力气体经营部 | BHK汞灯-百科|上海熙浩实业有限公司 |