Python實現(xiàn)透明數(shù)字時鐘效果
1. 簡介
這是一個使用 Python 和 Tkinter 庫實現(xiàn)的透明數(shù)字時鐘應用。該應用展示了如何創(chuàng)建一個沒有標題欄、背景透明的時鐘窗口,并提供了多個自定義功能,如字體大小調(diào)整、時鐘顏色更改、窗口透明度設置和窗口拖動功能。適合用于桌面上常駐顯示時間的用戶,且操作簡單、界面清晰。
功能:
透明背景與可拖動窗口:窗口背景透明,用戶可以隨意拖動時鐘位置,窗口無標題欄,簡潔而不影響顯示。
時鐘實時更新: 時鐘每秒更新,自動顯示當前的小時、分鐘和秒鐘。
動態(tài)調(diào)整字體大?。?通過右鍵菜單提供放大或縮小字體的選項,讓用戶根據(jù)需求調(diào)整字體顯示大小。
時鐘顏色自定義: 支持通過顏色選擇器更改時鐘數(shù)字的顏色,用戶可以自由選擇喜歡的顏色。
透明度設置: 右鍵菜單提供透明度調(diào)節(jié)選項,用戶可以設置窗口的透明度,滿足不同使用場景的需求。
右鍵菜單操作: 右鍵點擊窗口彈出菜單,提供更多功能選項,包括字體調(diào)整、顏色選擇、透明度設置以及關(guān)閉時鐘功能。
2. 運行效果


3. 相關(guān)源碼
import tkinter as tk
from tkinter import font, colorchooser
import time
# 創(chuàng)建窗口
root = tk.Tk()
root.title("透明數(shù)字時鐘")
# 獲取屏幕寬度和高度
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
# 設置窗口的初始大小和透明背景
root.geometry("360x120+{}+0".format(screen_width - 360)) # 將窗口放在右上角,寬度為360,高度為120
root.config(bg='black') # 背景設為黑色,透明窗口的效果
root.overrideredirect(True) # 去掉窗口的標題欄
root.attributes("-topmost", True) # 確保窗口在最上層
root.attributes("-transparentcolor", "black") # 設置透明背景顏色
# 設置初始字體
time_font = font.Font(family="Segoe UI", size=50, weight="bold")
label = tk.Label(root, bg="black", fg="red", font=time_font)
label.pack(expand=True)
# 定義拖動窗口的函數(shù)
def on_press(event):
"""記錄點擊位置"""
root.x = event.x
root.y = event.y
def on_drag(event):
"""更新窗口位置"""
deltax = event.x - root.x
deltay = event.y - root.y
root.geometry(f"+{root.winfo_x() + deltax}+{root.winfo_y() + deltay}")
# 綁定鼠標事件
root.bind("<Button-1>", on_press) # 當鼠標按下時記錄位置
root.bind("<B1-Motion>", on_drag) # 當鼠標拖動時更新窗口位置
# 更新時鐘的函數(shù)
def update_time():
"""更新時鐘顯示"""
current_time = time.strftime("%H:%M:%S") # 獲取當前時間,格式為時:分:秒
label.config(text=current_time)
label.after(1000, update_time) # 每秒更新一次
# 調(diào)整窗口大小以適應字體
def adjust_window_size():
"""調(diào)整窗口大小,以適應字體"""
font_size = time_font.cget("size")
window_width = font_size * 7 # 假設寬度為字體大小的7倍
window_height = font_size * 3 # 假設高度為字體大小的3倍
# 獲取當前窗口位置
current_x = root.winfo_x()
current_y = root.winfo_y()
# 調(diào)整窗口大小,但保留當前窗口位置
root.geometry(f"{window_width}x{window_height}+{current_x}+{current_y}")
# 放大字體
def increase_font_size():
current_size = time_font.cget("size")
new_size = current_size + 2 # 每次放大2個單位
time_font.config(size=new_size)
adjust_window_size() # 調(diào)整窗口大小
# 縮小字體
def decrease_font_size():
current_size = time_font.cget("size")
new_size = max(current_size - 2, 10) # 每次縮小2個單位,最低為10
time_font.config(size=new_size)
adjust_window_size() # 調(diào)整窗口大小
# 更改時鐘顯示顏色
def change_color():
"""打開顏色選擇器讓用戶選擇時鐘前景色"""
color = colorchooser.askcolor()[1] # 返回一個元組,第二個值是顏色的十六進制值
if color:
label.config(fg=color) # 設置時鐘顯示的顏色
# 調(diào)整透明度
def adjust_opacity(value):
"""調(diào)整窗口透明度"""
root.attributes("-alpha", value)
# 創(chuàng)建右鍵菜單
def create_menu(event):
"""創(chuàng)建并顯示菜單"""
if root.winfo_exists(): # 確保窗口沒有銷毀
menu = tk.Menu(root, tearoff=0)
menu.add_command(label="放大字體", command=increase_font_size) # 放大字體
menu.add_command(label="縮小字體", command=decrease_font_size) # 縮小字體
menu.add_command(label="更改時鐘顏色", command=change_color) # 更改時鐘顏色
# 創(chuàng)建透明度設置二級菜單
opacity_menu = tk.Menu(menu, tearoff=0)
opacity_menu.add_command(label="設置透明度 80%", command=lambda: adjust_opacity(0.8)) # 設置透明度為80%
opacity_menu.add_command(label="設置透明度 60%", command=lambda: adjust_opacity(0.6)) # 設置透明度為60%
opacity_menu.add_command(label="設置透明度 40%", command=lambda: adjust_opacity(0.4)) # 設置透明度為40%
opacity_menu.add_command(label="設置透明度 20%", command=lambda: adjust_opacity(0.2)) # 設置透明度為20%
opacity_menu.add_command(label="完全不透明", command=lambda: adjust_opacity(1)) # 完全不透明
menu.add_cascade(label="透明度設置", menu=opacity_menu) # 將透明度菜單添加到主菜單中
menu.add_separator()
menu.add_command(label="關(guān)閉時鐘", command=root.destroy) # 關(guān)閉時鐘
menu.post(event.x_root, event.y_root) # 在鼠標點擊的位置彈出菜單
else:
print("窗口已銷毀,無法顯示菜單。")
# 綁定右鍵點擊事件,顯示菜單
def on_right_click(event):
"""處理右鍵點擊并彈出菜單"""
if root.winfo_exists(): # 確保窗口存在
create_menu(event) # 創(chuàng)建右鍵菜單
else:
print("窗口已銷毀,無法處理右鍵菜單。")
root.bind("<Button-3>", on_right_click) # 右鍵點擊時彈出菜單
# 啟動時鐘更新
update_time()
# 初始調(diào)整窗口大小
adjust_window_size()
# 使窗口透明并顯示
root.mainloop()
4. 總結(jié)
該透明數(shù)字時鐘應用通過 Python 和 Tkinter 構(gòu)建,提供了豐富的自定義功能。無論是字體的大小、時鐘顏色,還是窗口透明度,都可以根據(jù)用戶需求靈活調(diào)整。通過簡單的右鍵菜單操作,用戶可以方便地控制時鐘外觀,提升桌面使用體驗。此應用適合需要常駐時間顯示的用戶,并能根據(jù)不同的使用環(huán)境提供適應性調(diào)整,具有很好的實用性和可定制性。
到此這篇關(guān)于Python實現(xiàn)透明數(shù)字時鐘效果的文章就介紹到這了,更多相關(guān)Python透明數(shù)字時鐘內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python基于Hypothesis測試庫生成測試數(shù)據(jù)
這篇文章主要介紹了Python基于Hypothesis測試庫生成測試數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04
在PyTorch中自定義fit()函數(shù)中的操作代碼
當在進行有監(jiān)督學習時,我們可以使用fit()函數(shù)對模型進行訓練,通過迭代優(yōu)化模型的參數(shù),使其能夠更好地擬合訓練數(shù)據(jù),本文給大家介紹了在PyTorch中自定義fit()函數(shù)中的操作代碼,感興趣的同學可以跟著小編一起來看看2024-05-05
Python語法學習之進程的創(chuàng)建與常用方法詳解
本文我們將學習一下在?Python?中去創(chuàng)建并使用多進程的方法,可以通過創(chuàng)建多個進程來幫助我們提高腳本執(zhí)行的效率,感興趣的可以了解一下2022-04-04
python+opencv實現(xiàn)的簡單人臉識別代碼示例
這篇文章主要介紹了圖像識別 python+opencv的簡單人臉識別,具有一定參考價值,需要的朋友可以參考下。2017-11-11

