欧美第十页,成人网成人A片,宾馆内激干人妻,偷偷内射,一区二区另类TS

sgtool.exe

前沿拓展:

sgtool.exe

掌養(yǎng)夠延場邊己就電腦無法使用搜狗輸入法提示SGTool.exe損壞的映像的解決方法如下:

1、打開這臺電腦(計(jì)算機(jī)),并點(diǎn)擊“卸載或更改程序”。

2、在程序列表中找到礎(chǔ)成項(xiàng)含東京“搜狗拼音輸入法”并右擊選擇“卸載/更改”,將其卸載。

3春跑很時(shí)控使省利室調(diào)、接著會彈出卸載向?qū)?,?/p>

①重置會清掉歷史抽獎記錄(含本地文件,如有必要建議對中獎名單留檔)

②抽獎中點(diǎn)擊重置會提示正在抽獎中

③非抽獎狀態(tài)點(diǎn)擊重置會提示該**作會刪除歷史記錄,是否確認(rèn)

基本功能點(diǎn)確認(rèn)后,我們就開始進(jìn)行GUI設(shè)計(jì)。

2. GUI設(shè)計(jì)與實(shí)現(xiàn)

基于功能點(diǎn),我們用axure簡單進(jìn)行UI布局設(shè)計(jì),第二再通過GUI開發(fā)庫進(jìn)行設(shè)計(jì),這里依舊采用的是pysimplegui,主要是簡單方便。

sgtool.exe

UI布局設(shè)計(jì)-axure

基于GUI設(shè)計(jì),我們編碼如下:

nameList_column = [
[sg.Text('人員名單:')],
[sg.Listbox(values=[], size=(20, 10), key='nameList')],
]
result_column = [
[sg.Text('中獎記錄:')],
[sg.Multiline('', size=(48, 10), key='result', text_color='DeepPink')],
]

# 主題設(shè)置
sg.theme('SystemDefaultForReal')

# 布局設(shè)置
layout = [[sg.Text('選擇參與抽獎人員名單文件:', font=('微軟雅黑', 12)), sg.InputText('', key='_file', size=(50, 1), font=('微軟雅黑', 10), enable_events=True), sg.FileBrowse('打開', file_types=(('Text Files', '*.xlsx'),), size=(10, 1), font=('微軟雅黑', 11))],
[sg.Frame(layout=[
[sg.Text('本輪獎項(xiàng):', font=('微軟雅黑', 12)), sg.Combo(['特等獎', '一等獎', '二等獎', '三等獎', '四等獎', '五等獎', '六等獎'], font=('微軟雅黑', 10), default_value='特等獎', size=(15, 5), key='_type'),
sg.Text('本輪人數(shù):', font=('微軟雅黑', 12)), sg.InputText('5', key='_num', size=(38, 1), font=('微軟雅黑', 10))],
],
title='抽獎設(shè)置', title_color='red', relief=sg.RELIEF_SUNKEN, tooltip='請進(jìn)行抽獎設(shè)置后再開始抽獎')],
[sg.Multiline(size=(48, 5), font=(
'微軟雅黑', 18), text_color='Blue', key='luckyName', justification='center')],
[sg.Column(nameList_column), sg.Column(result_column)],
[sg.Text('**作說明:', font=('微軟雅黑', 12))],
[sg.Text('①先選擇參與抽獎的人員名單xlsx文件,人員名單文件包含ID和name兩個(gè)字段n②獲獎名單將存在小工具所在文件夾,重置會刪除歷史記錄文件', font=('微軟雅黑', 10)),
sg.Text('', font=('微軟雅黑', 12), size=(5, 1)),
sg.Button('開始抽獎', font=('微軟雅黑', 12), button_color='Orange'),
sg.Button('結(jié)束', font=('微軟雅黑', 12), button_color='red'),
sg.Button('重置', font=('微軟雅黑', 12), button_color='red'), ],
]

# 創(chuàng)建窗口
window = sg.Window('抽獎小工具,作者@微信**:可以叫我才哥', layout,
font=('微軟雅黑', 12), default_element_size=(50, 1))

其包含的控件如下:

Text 文本InputText 輸入文本框FileBrowse 文件瀏覽Multiline 多行文本框Combo 下拉框Listbox 列表Button 按鈕

需要注意的是這里有個(gè)Frame組件,用于layout嵌套,可以很好地模塊化UI布局。

3. 功能實(shí)現(xiàn)

在本案例中,需要實(shí)現(xiàn)三個(gè)功能,分別是:讀取人員名單、隨機(jī)抽獎以及保存中獎名單。

3.1 讀取人員名單

這里采用的是openpyxl讀取表格數(shù)據(jù)并獲得某幾列的值,由于存在表頭,所以最后不需要表頭

def nameList(window):
fileName = values['_file']
try:
wb = openpyxl.load_workbook(fileName)
active_sheet = wb.active
names = [cell_object.value for cell_object in list(active_sheet.columns)[1]][1:]
ids = [cell_object.value for cell_object in list(active_sheet.columns)[0]][1:]
names = [name+'_'+str(id_) for name, id_ in zip(names, ids)]
window['nameList'].update(names)
return names
except:
sg.popup('請選擇正確格式的的人員名單文件', title='提示',)
3.2. 隨機(jī)抽獎

由于我們需要一次隨機(jī)抽取的人數(shù)存在多個(gè),所以這里用的是random.sample(),需要注意的是傳入的參數(shù)中names是需要去掉已中獎名單

def Result(window, names):
global is_run, luckyNames
_type = values['_type'] # 本輪獎項(xiàng)類型
_num = int(values['_num']) # 本輪人數(shù)

while True:
randomName = random.sample(names, k=_num)
luckyName = ' '.join(randomName)
window['luckyName'].update(luckyName)

if not is_run:
headers = ['獎項(xiàng)', '名單']
toCsv(headers, [_type]*len(randomName), randomName, lucky)
luckyNames = luckyNames + _type+' : '+luckyName+'nn'
window['result'].update(luckyNames)
return
time.sleep(0.088)
3.3. 保存中獎名單

這里我們用的是csv庫的方法,追加存儲

def toCsv(headers, col1, col2, file):
# 存在則追加,不存在則新建
if os.path.exists(lucky):
with open(lucky, 'a', encoding='utf_8_sig', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerows(zip(col1, col2))
else:
with open(lucky, 'w', encoding='utf_8_sig', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(headers)
writer.writerows(zip(col1, col2))

完成核心功能函數(shù)后,我們再進(jìn)行GUI交互邏輯的實(shí)現(xiàn)。

3.4. GUI交互邏輯

這里有兩個(gè)全局變量,其中一個(gè)用于記錄當(dāng)前抽獎狀態(tài),另外一個(gè)用于存儲當(dāng)前已經(jīng)獲獎的人員信息。關(guān)于交互邏輯的詳情,大家可以結(jié)合核心功能需求及以下代碼了解。

# 初始狀態(tài)
is_run = False
luckyNames = ''

# **循環(huán)
while True:
event, values = window.read()
if event in (None, '關(guān)閉程序'):
break
if event == '_file':
nameList(window)

if event == '開始抽獎':
if is_run:
sg.popup('抽獎進(jìn)行中,無需重復(fù)**作……', title='提示')
continue
try:
names = nameList(window) # 人員名單
_num = int(values['_num']) # 本輪人數(shù)
lucky = '中獎名單.csv' # 中獎名單
if os.path.exists(lucky):
with open('中獎名單.csv', 'r', encoding='utf_8_sig') as f:
reader = csv.reader(f)
selectedNames = set([i[1] for i in reader][1:])
names_set = set(names)-selectedNames
else:
names_set = set(names)
if len(names_set) >= _num:
is_run = True
_thread.start_new_thread(Result, (window, names_set))
else:
sg.popup(
f'請選擇正確本輪抽獎人數(shù)(當(dāng)前 {len(names_set)} 個(gè)未中獎人數(shù))', title='提示')
except:
sg.popup('請選擇正確本輪抽獎人數(shù)(別超過總?cè)藬?shù)哦)', title='提示')
elif event == '結(jié)束':
is_run = False
elif event == '重置':
if is_run:
sg.popup('抽獎進(jìn)行中,請等待抽獎結(jié)束后重置…', title='提示')
continue
yes_no = sg.popup_yes_no(
'重置會清楚歷史數(shù)據(jù),是否執(zhí)行此**作??', text_color='red', title='提示')
if yes_no == 'Yes':
try:
os.remove(lucky)
luckyNames = ''
window['result'].update(luckyNames)
window['luckyName'].update(luckyNames)
sg.popup('抽獎歷史記錄已被重置……', title='提示')
except:
sg.popup('無抽獎歷史記錄……', title='提示')
window.close()

基于此,我們就完成了隨機(jī)抽獎小工具的制作。

啟動頁如下:

sgtool.exe

最后,大家感興趣就可以將代碼打包成exe可執(zhí)行文件了,我這邊打包下來大概10MB左右大小。

以上就是本文全部內(nèi)容,如果你感興趣,點(diǎn)個(gè)贊和在看支持一下唄。

拓展知識:

原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請注明出處:http://m.cxzzxj.cn/49672.html

极品自慰网站| 欧美三级真做在线观看| 一区二区三区不卡视频| 九九热一区二区| 中文字幕精品一区二区日韩| 久久aⅴ无码av免费一区| 老妇狠狠高潮| 亚洲男人AV免费影院| 国产午夜无码片在线观看影院 | 国产乱妇无码大黄aa片| 久久久999色欲| 国产你懂的| 欧美日韩国产人成在线观看| 男女aj免费视频网站| 亚洲国产中文精品va在线观看香蕉| 。国产精品久久久| 69久久夜色精品国产69| 欧美一级亚洲三级| 色呦呦窝窝| 免费国产va在线观看| 91免费国产在线播放| 国产精品无码理论片| 四虎影院.com| 99久热成人精品视频| 中文字幕亚洲男人的天堂网络| 热热热热色色| 神武久久密桃视频| 国产精品69久久久久水密桃| 美女让男人桶到爽| 日韩不卡在线尤物视频| 日本少妇精品一区二区| 欧美成人精品高清在线播放| 日韩A极一片| 呦呦色一区| 一级a爱片国产亚洲精品| 美女视频三A级| 98在线视频噜噜噜国产| 亚洲欧美中文一区二区三区| 色婷婷亚洲一区二区综合| 国产三级片久在线视频| 日本影院精品|