日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:21日期: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 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品久久久亚洲| 成人啊v在线| 亚洲一区欧美激情| 久久精品国产www456c0m| 高清日韩欧美| 亚洲精品**中文毛片| 日韩精品1区| 久久精品高清| 亚洲欧美日韩精品一区二区| 伊人成人在线视频| 亚洲欧美网站| 欧美女激情福利| 私拍精品福利视频在线一区| 日韩精品午夜| 狠狠爱成人网| 免费欧美在线视频| 亚洲一区二区三区无吗| 日本在线不卡视频| 国产精品久久免费视频| 久久精品国产成人一区二区三区| 里番精品3d一二三区| 国产精品毛片一区二区在线看| 日韩精品91| 午夜在线观看免费一区| 蜜芽一区二区三区| 国产一精品一av一免费爽爽| 精品视频网站| 亚洲午夜天堂| 一区在线免费| 奇米亚洲欧美| 精品免费在线| 久久婷婷一区| 丝袜美腿高跟呻吟高潮一区| 日韩成人一级| 91偷拍一区二区三区精品| 久久视频精品| 天堂va在线高清一区| 精品久久精品| 99riav1国产精品视频| 欧美久久精品| 久久久久网站| 日本一区二区中文字幕| 国产美女亚洲精品7777| 国产第一亚洲| 99国产精品视频免费观看一公开| 日韩欧美中文字幕电影 | av资源新版天堂在线| 欧美日韩国产在线一区| 日本欧美韩国一区三区| av中文资源在线资源免费观看| 夜夜嗨网站十八久久| 国产三级一区| 999国产精品永久免费视频app| 婷婷精品在线| 成人久久久久| 亚洲人成高清| 蜜桃成人精品| 日本精品国产| 欧美午夜精彩| 久久99性xxx老妇胖精品| 欧美日韩一视频区二区| 国产综合视频| 久久精品免费看| 影音先锋久久精品| 综合日韩av| 欧美天堂在线| 国产视频久久| 97在线精品| 日韩欧美高清一区二区三区| 久久久成人网| 国产欧美日韩精品一区二区三区| 亚洲精品福利电影| 亚洲视频国产精品| 久久精品国产99国产| 欧美在线亚洲综合一区| 免费在线观看一区| 日本国产欧美| 黄色日韩精品| 成人亚洲一区| 久久精品99国产国产精| 99日韩精品| 日韩欧美二区| 国产精品中文字幕亚洲欧美| 亚洲综合日韩| 日韩欧美午夜| 国产精品1区在线| 国产亚洲一级| 亚洲成人va| 美女精品一区二区| 亚洲精品高潮| 影院欧美亚洲| 午夜久久中文| 国产精品99久久免费| 日韩精品欧美成人高清一区二区| 2023国产精品久久久精品双| 日韩在线二区| 国产videos久久| 香蕉精品久久| 久久久久久久久久久9不雅视频| 国产精品啊啊啊| 日韩av一区二| 尤物精品在线| 欧美在线观看视频一区| 久久uomeier| 成人在线超碰| 国产999精品在线观看| 国产伦理久久久久久妇女| 深夜日韩欧美| 免费在线观看不卡| 国产视频一区欧美| 99日韩精品| 99re国产精品| 亚洲综合丁香| 日韩精品一卡二卡三卡四卡无卡| 国产在线成人| 欧美va亚洲va日韩∨a综合色| 精品视频99| 麻豆传媒一区二区三区| 久久影院资源站| 麻豆一区二区三区| 久久亚洲道色| 精品国产黄a∨片高清在线| 国产精品久久久久久久久久齐齐 | 国产精品日本一区二区三区在线| 日本一区二区中文字幕| 88久久精品| 国产欧美在线| 久久久久久久久成人| 国产日韩1区| 国产精品亚洲一区二区在线观看 | 电影亚洲精品噜噜在线观看| 中文一区一区三区高中清不卡免费| 国产盗摄——sm在线视频| 天堂中文在线播放| 亚洲欧美一区在线| 中文一区在线| 日日夜夜免费精品视频| 欧美亚洲免费| 久久av国产紧身裤| 青青青免费在线视频| 久久久天天操| 久久精品卡一| 午夜在线播放视频欧美| 日本免费新一区视频| 久久中文字幕一区二区| 日产精品一区| 日韩视频一区| 日韩黄色免费网站| 精品精品久久| 亚洲一级高清| 在线观看视频免费一区二区三区| 91精品国产自产观看在线| 欧美激情麻豆| 日韩av免费| 日韩午夜一区| 日本成人手机在线| 久久国产乱子精品免费女| 国产成人久久精品一区二区三区| 日韩和的一区二在线| 成人羞羞视频播放网站| 玖玖精品视频| 国产精品久久久亚洲一区| 日韩在线不卡| 亚洲区第一页| 国产成人久久| 天堂成人国产精品一区| 在线一区电影| 国产精品视频一区二区三区综合| 日韩av福利| 亚洲人妖在线| 成人在线视频区| 国产一区二区三区自拍| 欧美一级二级视频| 欧美天堂视频| 亚洲欧美日韩视频二区| 国产精品第十页| 亚洲成人av观看| 日本不卡视频在线观看| 波多视频一区| 日韩精品亚洲aⅴ在线影院| 中文字幕在线视频网站| 亚洲乱码视频| 日韩久久一区二区三区| 日韩一区中文| 久久九九精品| 国产精品国码视频| 亚洲一级少妇| 欧美日韩亚洲一区在线观看| 秋霞影视一区二区三区| 欧美亚洲综合视频| 国产国产精品| 国产一区日韩| 中文字幕日本一区| 欧美天堂视频| 国产毛片一区二区三区| 9国产精品视频| 国产粉嫩在线观看| 欧美日韩1区2区3区| 国产99精品| 精品视频久久|