废话少说,直接上代码:
import tkinter as tk, time
bg = '#%02x%02x%02x' % (55,64,79)
dictWeekdays = {'0':'星期日','1':'星期一','2':'星期二','3':'星期三','4':'星期四','5':'星期五','6':'星期六'}
root = tk.Tk()
root.geometry("86x40+2474+1400")
root["background"] = bg
root.overrideredirect(True)
label = tk.Label(root, bg = bg, fg = 'white')
label.pack()
def on_update():
root.wm_attributes('-topmost',True)
localtime = time.localtime(time.time())
w = dictWeekdays[time.strftime("%w", localtime)]
m = time.strftime("%H:%M ", localtime)
date = time.strftime("\n%Y-%m-%d", localtime)
label['text'] = m + w + date
root.after(20000, on_update)
on_update()
root.mainloop()
效果:
说明:
- 我的显示器分辨率是2560x1440,所以将窗口位置设置为2474x1400,隐藏窗口标题栏,设置窗口和文字的背景颜色为系统任务栏的背景色,这样正好能覆盖Win10默认的系统时间显示位置;
- 每隔20秒自动更新一次时间;
- 每次更新时,都将窗口重新置顶。因为当使用快捷键Win+D显示桌面时,所有程序的窗口都会被最小化,该tk窗口也会被隐藏,所以自动将窗口重新置顶显示;
- 每次客户询盘几天能发货时,都要手动查看一下今天是星期几!因为国际快递周末发不出的!以后宝宝再也不用烦躁的点来点去啦。。。
然后再稍微改进一下:
import tkinter as tk, datetime
bg = '#%02x%02x%02x' % (55,64,79)
dictWeekdays = {'0':'星期日','1':'星期一','2':'星期二','3':'星期三','4':'星期四','5':'星期五','6':'星期六'}
dictHoursOffset = {
'澳大利亚': 3,
'日本': 1, # 比北京快1小时
'中东': -4,
'俄罗斯': -4,
'南非': -6,
'欧洲': -7,
'英国': -8,
'美国': -12,
}
class WinMain():
def __init__(self):
self.winPop = None
self.root = tk.Tk()
self.root.geometry("86x40+2474+1400")
self.root["background"] = bg
self.root.overrideredirect(True)
self.label = tk.Label(self.root, bg = bg, fg = 'white')
self.label.pack()
self.label.bind("<Button-1>", self.onBtnClick1)
self.on_update()
self.root.mainloop()
def update_winpop(self):
if self.winPop is not None:
self.winPop.close()
self.winPop = None
else:
self.winPop = WinPop(self.root)
def onBtnClick1(self, event):
self.update_winpop()
def on_update(self):
self.root.wm_attributes('-topmost',True)
now = datetime.datetime.now()
w = dictWeekdays[now.strftime("%w")]
m = now.strftime("%H:%M ")
date = now.strftime("\n%Y-%m-%d")
self.label['text'] = m + w + date
self.root.after(3000, self.on_update)
class WinPop():
def __init__(self, winRoot):
self.win = tk.Toplevel(winRoot, bg = bg)
self.win.geometry("86x600+2474+800")
self.win.overrideredirect(True)
self.lf = tk.Label(self.win, text='', bg = bg, fg = 'white', font=("微软雅黑", 12))
self.update()
self.lf.pack()
def close(self):
self.win.destroy()
def update(self):
now = datetime.datetime.now()
s = '\n'
for k,v in dictHoursOffset.items():
newtime = now + datetime.timedelta(hours = v)
m = newtime.strftime("%H:%M ")
s += (k + '\n' + m + '\n\n')
self.lf['text'] = s
class App():
def __init__(self):
self.win_main = WinMain()
if __name__ == "__main__":
app = App()
说明:
- 面向对象;
- 增加世界时间显示功能;
-
鼠标点击一次Label,就显示时间时间,再点击,取消时间时间显示。