挑戰(zhàn)練習(xí)腳本運行工具的交互優(yōu)化好課加微ypkc_第1頁
挑戰(zhàn)練習(xí)腳本運行工具的交互優(yōu)化好課加微ypkc_第2頁
挑戰(zhàn)練習(xí)腳本運行工具的交互優(yōu)化好課加微ypkc_第3頁
挑戰(zhàn)練習(xí)腳本運行工具的交互優(yōu)化好課加微ypkc_第4頁
挑戰(zhàn)練習(xí)腳本運行工具的交互優(yōu)化好課加微ypkc_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

4.練習(xí):運行工具的交互優(yōu)①在課程代碼基礎(chǔ)上增加一個open按鈕,能彈出系統(tǒng)彈窗選擇任意路徑的文件,然后將文件移動到這個項目代碼所在的GUI文件列表中,并且在程序界面的listbox中顯示了這個文件。 /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)生錯誤。defforpinmultiprocessing.active_children():=='print':deflistb=app.children['listb']s_path=#注意,在windowslinux/macififname=='main':app=make_app()路徑下?1tkinter.filedialog模塊中的askopenfilenames2.參考【】第一階段中所學(xué)到的shutil模塊,其中的move函數(shù)提供了移3MultiProcessing庫中Processis_alive()方法,來檢查一個進(jìn)程是否已經(jīng)執(zhí)行完畢。并且利用兩個list來記錄,一個list叫running,當(dāng)啟動一個進(jìn)程的時候,將它放入running中;另一個list叫have_done,每隔一段時間檢查running中的每個進(jìn)程,如果isnotalive,則認(rèn)為該進(jìn)程已經(jīng)運行完畢,將其放入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)測正在運行的程序是否已經(jīng)運行完畢defui_make_list():#獲取listboxlistbapp.children['listb']#清空listbox中的內(nèi)容fordinlistb.insert(END,d)ifdnotinhave_doneelselistb.insert(END, deff_names=askopenfilenames()forfinf_names:shutil.move(f,'./gui')#運行文def#獲取listb=#獲取listboxs_path=#檢查需要run的是否已經(jīng)在運==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,))#停止運deflistb=app.children['listb']s_path=forpinmultiprocessing.active_children():==s_path:print("Thisscriptisnot#監(jiān)測程序狀態(tài)def#利用MultiProcessingProcessis_aliveforrinifnotr.is_alive()notinhave_done:listb=app.children['listb']s_path=listb.get(ACTIVE)app.after(1000,watcher)#注意

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論