1. 程式人生 > >tkinter實現電子時鐘

tkinter實現電子時鐘

一 程式碼

  1. import tkinter
  2. import threading
  3. import datetime
  4. import time
  5. app = tkinter.Tk()
  6. app.overrideredirect(True)#不顯示標題欄
  7. app.attributes('-alpha',0.9)#半透明
  8. app.attributes('-topmost',1)#總是在頂端
  9. app.geometry('110x25+100+100')#初始大小與位置
  10. labelDateTime = tkinter.Label(app)
  11. labelDateTime.pack(fill=tkinter.BOTH, expand
    =tkinter.YES)
  12. labelDateTime.configure(bg ='gray')
  13. X = tkinter.IntVar(value=0)#記錄滑鼠左鍵按下的位置
  14. Y = tkinter.IntVar(value=0)
  15. canMove = tkinter.IntVar(value=0)#視窗是否可拖動
  16. still = tkinter.IntVar(value=1)#是否仍在執行
  17. def onLeftButtonDown(event):
  18. app.attributes('-alpha',0.4)#開始拖動時增加透明度
  19. X.set(event.x)#滑鼠左鍵按下,記錄當前位置
  20. Y.set(event.y)
  21. canMove.set(1)#並標記視窗可拖動
  22. labelDateTime.bind('<Button-1>', onLeftButtonDown)
  23. def onLeftButtonUp(event):
  24. app.attributes('-alpha',0.9)#停止拖動時恢復透明度
  25. canMove.set(0)#滑鼠左鍵擡起,標記視窗不可拖動
  26. labelDateTime.bind('<ButtonRelease-1>', onLeftButtonUp)
  27. def onLeftButtonMove(event):
  28. if canMove.get()==0:
  29. return
  30. newX = app.winfo_x()+(event.x-X.get())
  31. newY = app.winfo_y()+(event.y-Y.get())
  32. g ='110x25+'+str(newX)+'+'+str(newY)
  33. app.geometry(g)#修改視窗的位置
  34. labelDateTime.bind('<B1-Motion>', onLeftButtonMove)
  35. def onRightButtonDown(event):
  36. still.set(0)
  37. t.join(0.2)
  38. app.destroy()#關閉視窗
  39. labelDateTime.bind('<Button-3>', onRightButtonDown)
  40. def nowDateTime():
  41. while still.get()==1:
  42. now = datetime.datetime.now()
  43. s = str(now.year)+'-'+str(now.month)+'-'+str(now.day)+' '
  44. s = s+str(now.hour)+':'+str(now.minute)+':'+str(now.second)
  45. labelDateTime['text']= s #顯示當前時間
  46. time.sleep(0.2)
  47. t = threading.Thread(target=nowDateTime)
  48. t.daemon =True
  49. t.start()
  50. app.mainloop()
二 執行結果