日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
手把手教你用Python高仿一個任務管理器

大家好,我是Python進階者。

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比休寧縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式休寧縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋休寧縣地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。

前言

相信大家對任務管理器都不是很陌生了,Ctrl+Alt+Del即可打開,然后點擊啟動任務管理器,或者右擊任務欄-啟動任務管理器即可啟動任務管理器,啟動之后界面如下:

可以看出它列舉出了一些重要的參數(shù),比如進程數(shù)量,CPU使用率,物理內(nèi)存,接下來我們就來一一列舉出來。

一、項目準備

編輯器:sublime text 3

模塊:psutil tkinter

二、實現(xiàn)步驟

1、編寫主界面

要想實現(xiàn)任務管理器,首先我們寫一個界面出來,這里我們運用tkinter編寫個界面出來:

2、編寫菜單欄

我們先實現(xiàn)下它的菜單欄,這里用到tkinter的Menu模塊,不知道大家有沒有印象,那么開始吧。

1)首先我們需要創(chuàng)建一個主菜單,然后將各個子菜單裝進去:

 
 
 
 
  1. m=t.Menu(root) 

2)創(chuàng)建各個子菜單:

 
 
 
 
  1. #文件菜單 
  2. file=t.Menu(m,tearoff=False)  
  3. m.add_cascade(label='文件', menu=file) 
  4. file.add_command(label='新建任務',accelerator='(N)') 
  5. file.add_command(label='退出任務欄管理器',command=root.quit,accelerator='(x)') 
  6.  
  7.  
  8. #選項菜單 
  9. ii=t.IntVar() 
  10. ii.set(1) 
  11. o=t.Menu(m,tearoff=False) 
  12. m.add_cascade(label='選項',menu=o) 
  13. o.add_radiobutton(label='前端顯示',variable=ii, value=0) 
  14. o.add_radiobutton(label='使用時最小化',variable=ii, value=1) 
  15. o.add_radiobutton(label='最小化時隱藏',variable=ii, value=2) 
  16.  
  17.  
  18. #查看菜單 
  19. v=t.Menu(m,tearoff=False) 
  20. m.add_cascade(label='查看',menu=v) 
  21. v.add_command(label='立即刷新') 
  22. #二級菜單 
  23. iv=t.IntVar() 
  24. iv.set(1) 
  25. s=t.Menu(v,tearoff=False) 
  26. v.add_cascade(label='更新速度',menu=s) 
  27. s.add_radiobutton(label='高',variable=iv, value=0) 
  28. s.add_radiobutton(label='普通',variable=iv, value=1) 
  29. s.add_radiobutton(label='低',variable=iv, value=2) 
  30. s.add_radiobutton(label='暫停',variable=iv, value=3) 
  31. v.add_command(label='選項列') 
  32.  
  33.  
  34. #幫助菜單 
  35. h=t.Menu(m,tearoff=False) 
  36. m.add_cascade(label='幫助',menu=h) 
  37. h.add_command(label='任務管理器幫助主體') 
  38. h.add_command(label='關于任務管理器') 

3)將菜單添加到主界面配置中

 
 
 
 
  1. root.configure(menu=m) 

最后結(jié)果圖,可以看到,基本和任務管理器差不多。

3、界面中的功能

界面寫完了我們該向界面添加組件了,由任務管理器那張圖我們可以看到它有一個切換任務窗口的按鈕:

1)編寫按鈕

 
 
 
 
  1. b1=t.Button(root,text='應用程序',command=yy) 
  2. b2=t.Button(root,text='進程',command=jc) 
  3. b3=t.Button(root,text='服務',command=fw) 
  4. b4=t.Button(root,text='性能',command=xn) 
  5. b5=t.Button(root,text='聯(lián)網(wǎng)',command=lw) 
  6. b6=t.Button(root,text='用戶',command=yh) 
  7.  
  8. #定位 
  9. b1.place(x=10,y=15,height=20,width=60) 
  10. b2.place(x=70,y=15,height=20,width=60) 
  11. b3.place(x=130,y=15,height=20,width=60) 
  12. b4.place(x=190,y=15,height=20,width=60) 
  13. b5.place(x=250,y=15,height=20,width=60) 
  14. b6.place(x=310,y=15,height=20,width=60) 

2)編寫多行文本框

 
 
 
 
  1. text=t.Text(root,width=100,height=40) 
  2. text.place(x=10,y=36) 

3)編寫函數(shù)實現(xiàn)簡單功能

 
 
 
 
  1. def yy(): 
  2.     text.delete(1.0,'end') 
  3.     text.insert('insert','yy') 
  4. def jc(): 
  5.     text.delete(1.0,'end') 
  6.     text.insert('insert','jc') 
  7. def fw(): 
  8.     text.delete(1.0,'end') 
  9.     text.insert('insert','fw') 
  10. def xn(): 
  11.     text.delete(1.0,'end') 
  12.     text.insert('insert','xn') 
  13. def lw(): 
  14.     text.delete(1.0,'end') 
  15.     text.insert('insert','lw') 
  16. def yh(): 
  17.     text.delete(1.0,'end') 
  18.     text.insert('insert','yh') 

這樣就實現(xiàn)了不同按鈕之間切換不同的界面。

4)編寫下面的進程數(shù),CPU使用率,物理內(nèi)存

我們使用標簽來放置這些參數(shù),因為這三項的參數(shù)是可變的,所以暫時只寫前面名字:

 
 
 
 
  1. t1=t.Label(text='進程數(shù):') 
  2. t2=t.Label(text='CPU 使用率:') 
  3. t3=t.Label(text='物理內(nèi)存:') 
  4. t1.place(x=10,y=580,width=120) 
  5. t2.place(x=150,y=580,width=120) 
  6. t3.place(x=300,y=580,width=120) 

5)給多行文本框添加滾動條

我們可以使用模塊Scrollbar來實現(xiàn),安裝滾動條之前需要做兩件事情:

1.指定該組件的yscrollbarcommand參數(shù)為Scrollbar的set()方法

2.指定Scrollbar 的 command 參數(shù)為該組件的 yview() 方法

接下來我們實現(xiàn)它:

 
 
 
 
  1. sb=t.Scrollbar(root) 
  2. sb.pack(side='left',fill='y') 
  3. text=t.Text(root,width=100,height=40) 
  4. text.place(x=10,y=36) 
  5. sb.config(command=text.yview) #文本框內(nèi)容隨滾動條滾動 
  6. text.config(yscrollcommand=sb.set(0.1,0.3)) #Y軸填充 

6)添加狀態(tài)欄文本標簽

 
 
 
 
  1. t1=t.Label(text='') 
  2. t2=t.Label(text='') 
  3. t3=t.Label(text='') 

(注:這里只是隱藏部件,萬不可用destroy銷毀部件)

7)實現(xiàn)狀態(tài)欄標簽功能

現(xiàn)在我們來實現(xiàn)這三個標簽的內(nèi)容。想必大家剛剛應該看到了,上面的標簽沒有設置任何內(nèi)容,那么這是為什么呢?我們都知道,一旦你把內(nèi)容添加進去,它就會緊隨其后并不會覆蓋,所以初始值必須是空,才不至于不能覆蓋值。那么我們來看下具體實現(xiàn)過程吧。

 
 
 
 
  1. def jcs(): 
  2.   t1.configure(text='進程數(shù):'+str(len(psutil.pids()))) 
  3.   root.after(3000,jcs) 
  4. def cpu(): 
  5.   pp=str(ceil(psutil.cpu_percent(1))) 
  6.   t2.configure(text='CPU 使用率:'+pp+'%') 
  7.   root.after(1500,cpu) 
  8. def wlnc(): 
  9.   f= psutil.virtual_memory().free #剩余內(nèi)存 
  10.   t=psutil.virtual_memory().total#總內(nèi)存 
  11.   wl= float(t-f)/float(t) #為使得最后值更精確,必須用float 
  12.   t3.configure(text='物理內(nèi)存:'+str(floor(wl*100))+'%')  
  13.   root.after(2000,wlnc) 

這里的三個函數(shù)就是分別實現(xiàn)上面的三個功能的,最后將它添加到窗口事件即可。

8)功能編寫

可以看到這頁主要是系統(tǒng)運行的一些應用程序的名字,所以我們可以這樣這里我們需要用到模塊psutil 來獲取系統(tǒng)的關鍵參數(shù)。

1.編寫應用程序選項

應用程序選項包含進程號和進程名和進程文件路徑,所以可以用psutil進行獲取,方法如下:

 
 
 
 
  1. text.insert('insert','進程號   '+'進程名      '+'  進程文件路徑'+'\n') 
  2.   for y in psutil.pids(): 
  3.     a=psutil.Process(y) 
  4.     if a.name()=='System Idle Process': 
  5.       continue 
  6.     else: 
  7.       text.insert('insert',str(y)+'     '+a.name()+'   '+a.exe()+'\n\n') 

這樣就可以將這些內(nèi)容添加進來了。

2.編寫進程選項

這里我們可以投機取巧,使用cmd中的tasklist命令,它可以打印出當前系統(tǒng)所有在運行的進程的信息。

 
 
 
 
  1. mm=os.popen('tasklist') 
  2. text.insert('insert',mm.read()) 

3.編寫服務選項

也是使用cmd中的sc 命令,它相當于一個掃描器,可以得到很多有用的信息。

 
 
 
 
  1. mm=os.popen('sc query type= service') 
  2. text.insert('insert',mm.read()) 

4.編寫性能選項

這個內(nèi)容會比較多點,因為我們要得到比較多的參數(shù)和把組件放在多行文本框中,于是增加了一些冗余代碼:

 
 
 
 
  1. l1=t.Label(root,text='開機時間:')  tm=datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")  
  2.   l2=t.Label(root,text=str(tm)) 
  3.   l3=t.Label(root,text='當前時間:') 
  4.   l4=t.Label(root,text='') 
  5.   dq=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) 
  6.   l4.configure(text=str(dq)) 
  7.   l5=t.Label(root,text='物理內(nèi)存使用情況(MB):') 
  8.   l6=t.Label(root,text='') 
  9.   jh=psutil.virtual_memory() #物理內(nèi)存 
  10.   tt=int((jh.total)/1024/1024) #總量 
  11.   us=int((jh.used)/1024/1024) #使用量 
  12.   fr=int((jh.free)/1024/1024) #剩余量 
  13.   l6.configure(text='總量:' + str(tt) +'\n'+'使用:'+str(us) +'\n'+'剩余:'+str(fr)) 
  14.   l7=t.Label(root,text='交換內(nèi)存使用情況(MB):') 
  15.   l8=t.Label(root,text='') 
  16.   hj=psutil.swap_memory() #交換內(nèi)存 
  17.   ht=int((hj.total)/1024/1024)  
  18.   hu=int((hj.used)/1024/1024) 
  19.   hf=int((hj.free)/1024/1024) 
  20.   l8.configure(text='總量:' + str(ht) + '  '+'使用:'+str(hu) +'  '+'剩余:'+str(hf)) 
  21.   text.window_create('insert',window=l1) #添加組件到多行文本框 
  22.   text.window_create('insert',window=l2) 
  23.   text.insert('insert','\n\n') 
  24.   text.window_create('insert',window=l3) 
  25.   text.window_create('insert',window=l4) 
  26.   text.insert('insert','\n\n') 
  27.   text.window_create('insert',window=l5) 
  28.   text.window_create('insert',window=l6) 
  29.   text.insert('insert','\n\n') 
  30.   text.window_create('insert',window=l7) 
  31.   text.window_create('insert',window=l8) 

5.編寫聯(lián)網(wǎng)選項

這里我們只獲取網(wǎng)卡的收發(fā)流量,因此:

 
 
 
 
  1. n = psutil.net_io_counters() 
  2. r=str(float(n.bytes_recv / 1024 / 1024))+'MB' 
  3. s= str(float(n.bytes_sent / 1024 / 1024))+'MB' 
  4. text.insert('insert','網(wǎng)卡接收流量: '+str(r)+'\n'+'網(wǎng)卡發(fā)送流量:'+str(s)+'\n') 

6.編寫用戶選項

這里我們需要獲取當前的用戶數(shù):

 
 
 
 
  1. use='    用戶'+'      '+'     狀態(tài)'+'\n' 
  2. text.insert('insert',use) 
  3. for y in psutil.users(): 
  4.   text.insert('2.0',str(y.name)+'  '+'運行中。。。。'+'\n') 

這樣就完成了任務管理器的編寫了。

三、總結(jié)

通過對任務管理器的了解,使我們認識到了系統(tǒng)中的一些至關重要的信息,比如說通過進程名可以獲取進程號,通過進程號可以獲取進程名,cmd命令的用法,可以說是相當親民了,希望本文可以幫到大家。


網(wǎng)頁標題:手把手教你用Python高仿一個任務管理器
文章轉(zhuǎn)載:http://www.5511xx.com/article/cdsegoe.html