版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.練習(xí):運(yùn)行工具的交互優(yōu)①在課程代碼基礎(chǔ)上增加一個(gè)open按鈕,能彈出系統(tǒng)彈窗選擇任意路徑的文件,然后將文件移動(dòng)到這個(gè)項(xiàng)目代碼所在的GUI文件列表中,并且在程序界面的listbox中顯示了這個(gè)文件。 /done.pngfromrunpyimportrun_pathfromtkinterimport*#frommultiprocessingimportProcessimportmultiprocessingimport#app -->id-->#|script|-->func1-->fun2-->func3#\App\-->disy()&{ifdo()}-->update()&{ifdefmake_app():app=Tk()returnappdeflistb=app.children['listb']fordinos.listdir():deflistb=app.children['listb']s_path=#注意:linux/mac系統(tǒng)下可以使用中的lambda表達(dá)式,windows系統(tǒng)的用戶,需要按此方法調(diào)用Process模塊。#p=multiprocessing.Process(name='print',target=run_path,#其中,argstargetwindowstarget不建議使用lambda表達(dá)式,很容易產(chǎn)生錯(cuò)誤。defforpinmultiprocessing.active_children():=='print':deflistb=app.children['listb']s_path=#注意,在windowslinux/macififname=='main':app=make_app()路徑下?1tkinter.filedialog模塊中的askopenfilenames2.參考【】第一階段中所學(xué)到的shutil模塊,其中的move函數(shù)提供了移3MultiProcessing庫(kù)中Processis_alive()方法,來(lái)檢查一個(gè)進(jìn)程是否已經(jīng)執(zhí)行完畢。并且利用兩個(gè)list來(lái)記錄,一個(gè)list叫running,當(dāng)啟動(dòng)一個(gè)進(jìn)程的時(shí)候,將它放入running中;另一個(gè)list叫have_done,每隔一段時(shí)間檢查running中的每個(gè)進(jìn)程,如果isnotalive,則認(rèn)為該進(jìn)程已經(jīng)運(yùn)行完畢,將其放入have_done中。#coding:utf-fromrunpyimportrun_pathfromtkinterimport*fromtkinter.filedialogimport*importmultiprocessingimportshutilimportrunning=have_done=#創(chuàng)建GUIdefmake_app():app=Listbox(app,name='listb').pack(fill=BOTH,expand=True)Button(app,text='open',command=openfile).pack()Button(app,text='run',command=run_script).pack()Button(app,text='stop',command=stop_script).pack()return#填充listbox,并監(jiān)測(cè)正在運(yùn)行的程序是否已經(jīng)運(yùn)行完畢defui_make_list():#獲取listboxlistbapp.children['listb']#清空l(shuí)istbox中的內(nèi)容fordinlistb.insert(END,d)ifdnotinhave_doneelselistb.insert(END, deff_names=askopenfilenames()forfinf_names:shutil.move(f,'./gui')#運(yùn)行文def#獲取listb=#獲取listboxs_path=#檢查需要run的是否已經(jīng)在運(yùn)==print("Thisscriptisalreadyrunning.")#注意此處targetargs。argstarget#linux/mac系統(tǒng)下可以使用中的lambda表達(dá)式,windows系統(tǒng)下需要按此方法使用,該方法是更標(biāo)準(zhǔn)的法。p=multiprocessing.Process(name=s_path,target=run_path,args=('./gui/'+s_path,))#停止運(yùn)deflistb=app.children['listb']s_path=forpinmultiprocessing.active_children():==s_path:print("Thisscriptisnot#監(jiān)測(cè)程序狀態(tài)def#利用MultiProcessingProcessis_aliveforrinifnotr.is_alive()notinhave_done:listb=app.children['listb']s_path=listb.get(ACTIVE)app.after(1000,watcher)#注意
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年幼兒課程教案6篇
- 智能科創(chuàng)課程設(shè)計(jì)
- 2025年度股權(quán)代持及收益權(quán)分配合同(個(gè)人股權(quán)投資與代持)20篇
- 2025年度住宅小區(qū)智能安防系統(tǒng)合同11294篇
- 2025年新能源汽車(chē)充電樁停車(chē)場(chǎng)地合作租賃合同3篇
- 網(wǎng)紅木質(zhì)拓展課程設(shè)計(jì)
- 2025年草花種植基地水資源使用權(quán)合同3篇
- 2024食品行業(yè)市場(chǎng)競(jìng)爭(zhēng)分析合同
- 電纜掛牌施工方案
- 2024食品行業(yè)線上線下整合營(yíng)銷(xiāo)代理協(xié)議3篇
- 2025年度私立學(xué)校教師聘用合同(初中部專業(yè)學(xué)科)3篇
- DB32T 4880-2024民用建筑碳排放計(jì)算標(biāo)準(zhǔn)
- 銀行2025年紀(jì)檢工作計(jì)劃
- 注射泵管理規(guī)范及工作原理
- 國(guó)潮風(fēng)中國(guó)風(fēng)2025蛇年大吉蛇年模板
- 故障診斷技術(shù)的國(guó)內(nèi)外發(fā)展現(xiàn)狀
- 農(nóng)機(jī)維修市場(chǎng)前景分析
- 匯款賬戶變更協(xié)議
- 蝦皮shopee新手賣(mài)家考試題庫(kù)及答案
- 四川省宜賓市2023-2024學(xué)年八年級(jí)上學(xué)期期末義務(wù)教育階段教學(xué)質(zhì)量監(jiān)測(cè)英語(yǔ)試題
- 價(jià)值醫(yī)療的概念 實(shí)踐及其實(shí)現(xiàn)路徑
評(píng)論
0/150
提交評(píng)論