tkinter實現電子時鐘
阿新 • • 發佈:2019-02-11
一 程式碼
import tkinter
import threading
import datetime
import time
app = tkinter.Tk()
app.overrideredirect(True)#不顯示標題欄
app.attributes('-alpha',0.9)#半透明
app.attributes('-topmost',1)#總是在頂端
app.geometry('110x25+100+100')#初始大小與位置
labelDateTime = tkinter.Label(app)
labelDateTime.pack(fill=tkinter.BOTH, expand
labelDateTime.configure(bg ='gray')
X = tkinter.IntVar(value=0)#記錄滑鼠左鍵按下的位置
Y = tkinter.IntVar(value=0)
canMove = tkinter.IntVar(value=0)#視窗是否可拖動
still = tkinter.IntVar(value=1)#是否仍在執行
def onLeftButtonDown(event):
app.attributes('-alpha',0.4)#開始拖動時增加透明度
X.set(event.x)#滑鼠左鍵按下,記錄當前位置
Y.set(event.y)
canMove.set(1)#並標記視窗可拖動
labelDateTime.bind('<Button-1>', onLeftButtonDown)
def onLeftButtonUp(event):
app.attributes('-alpha',0.9)#停止拖動時恢復透明度
canMove.set(0)#滑鼠左鍵擡起,標記視窗不可拖動
labelDateTime.bind('<ButtonRelease-1>', onLeftButtonUp)
def onLeftButtonMove(event):
if canMove.get()==0:
return
newX = app.winfo_x()+(event.x-X.get())
newY = app.winfo_y()+(event.y-Y.get())
g ='110x25+'+str(newX)+'+'+str(newY)
app.geometry(g)#修改視窗的位置
labelDateTime.bind('<B1-Motion>', onLeftButtonMove)
def onRightButtonDown(event):
still.set(0)
t.join(0.2)
app.destroy()#關閉視窗
labelDateTime.bind('<Button-3>', onRightButtonDown)
def nowDateTime():
while still.get()==1:
now = datetime.datetime.now()
s = str(now.year)+'-'+str(now.month)+'-'+str(now.day)+' '
s = s+str(now.hour)+':'+str(now.minute)+':'+str(now.second)
labelDateTime['text']= s #顯示當前時間
time.sleep(0.2)
t = threading.Thread(target=nowDateTime)
t.daemon =True
t.start()
app.mainloop()