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


3. 相關(guān)源碼
import tkinter as tk
from tkinter import font, colorchooser
import time
# 創(chuàng)建窗口
root = tk.Tk()
root.title("透明數(shù)字時(shí)鐘")
# 獲取屏幕寬度和高度
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
# 設(shè)置窗口的初始大小和透明背景
root.geometry("360x120+{}+0".format(screen_width - 360)) # 將窗口放在右上角,寬度為360,高度為120
root.config(bg='black') # 背景設(shè)為黑色,透明窗口的效果
root.overrideredirect(True) # 去掉窗口的標(biāo)題欄
root.attributes("-topmost", True) # 確保窗口在最上層
root.attributes("-transparentcolor", "black") # 設(shè)置透明背景顏色
# 設(shè)置初始字體
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)
# 定義拖動(dòng)窗口的函數(shù)
def on_press(event):
"""記錄點(diǎn)擊位置"""
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}")
# 綁定鼠標(biāo)事件
root.bind("<Button-1>", on_press) # 當(dāng)鼠標(biāo)按下時(shí)記錄位置
root.bind("<B1-Motion>", on_drag) # 當(dāng)鼠標(biāo)拖動(dòng)時(shí)更新窗口位置
# 更新時(shí)鐘的函數(shù)
def update_time():
"""更新時(shí)鐘顯示"""
current_time = time.strftime("%H:%M:%S") # 獲取當(dāng)前時(shí)間,格式為時(shí):分:秒
label.config(text=current_time)
label.after(1000, update_time) # 每秒更新一次
# 調(diào)整窗口大小以適應(yīng)字體
def adjust_window_size():
"""調(diào)整窗口大小,以適應(yīng)字體"""
font_size = time_font.cget("size")
window_width = font_size * 7 # 假設(shè)寬度為字體大小的7倍
window_height = font_size * 3 # 假設(shè)高度為字體大小的3倍
# 獲取當(dāng)前窗口位置
current_x = root.winfo_x()
current_y = root.winfo_y()
# 調(diào)整窗口大小,但保留當(dāng)前窗口位置
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個(gè)單位
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個(gè)單位,最低為10
time_font.config(size=new_size)
adjust_window_size() # 調(diào)整窗口大小
# 更改時(shí)鐘顯示顏色
def change_color():
"""打開顏色選擇器讓用戶選擇時(shí)鐘前景色"""
color = colorchooser.askcolor()[1] # 返回一個(gè)元組,第二個(gè)值是顏色的十六進(jìn)制值
if color:
label.config(fg=color) # 設(shè)置時(shí)鐘顯示的顏色
# 調(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="更改時(shí)鐘顏色", command=change_color) # 更改時(shí)鐘顏色
# 創(chuàng)建透明度設(shè)置二級(jí)菜單
opacity_menu = tk.Menu(menu, tearoff=0)
opacity_menu.add_command(label="設(shè)置透明度 80%", command=lambda: adjust_opacity(0.8)) # 設(shè)置透明度為80%
opacity_menu.add_command(label="設(shè)置透明度 60%", command=lambda: adjust_opacity(0.6)) # 設(shè)置透明度為60%
opacity_menu.add_command(label="設(shè)置透明度 40%", command=lambda: adjust_opacity(0.4)) # 設(shè)置透明度為40%
opacity_menu.add_command(label="設(shè)置透明度 20%", command=lambda: adjust_opacity(0.2)) # 設(shè)置透明度為20%
opacity_menu.add_command(label="完全不透明", command=lambda: adjust_opacity(1)) # 完全不透明
menu.add_cascade(label="透明度設(shè)置", menu=opacity_menu) # 將透明度菜單添加到主菜單中
menu.add_separator()
menu.add_command(label="關(guān)閉時(shí)鐘", command=root.destroy) # 關(guān)閉時(shí)鐘
menu.post(event.x_root, event.y_root) # 在鼠標(biāo)點(diǎn)擊的位置彈出菜單
else:
print("窗口已銷毀,無法顯示菜單。")
# 綁定右鍵點(diǎn)擊事件,顯示菜單
def on_right_click(event):
"""處理右鍵點(diǎn)擊并彈出菜單"""
if root.winfo_exists(): # 確保窗口存在
create_menu(event) # 創(chuàng)建右鍵菜單
else:
print("窗口已銷毀,無法處理右鍵菜單。")
root.bind("<Button-3>", on_right_click) # 右鍵點(diǎn)擊時(shí)彈出菜單
# 啟動(dòng)時(shí)鐘更新
update_time()
# 初始調(diào)整窗口大小
adjust_window_size()
# 使窗口透明并顯示
root.mainloop()
4. 總結(jié)
該透明數(shù)字時(shí)鐘應(yīng)用通過 Python 和 Tkinter 構(gòu)建,提供了豐富的自定義功能。無論是字體的大小、時(shí)鐘顏色,還是窗口透明度,都可以根據(jù)用戶需求靈活調(diào)整。通過簡單的右鍵菜單操作,用戶可以方便地控制時(shí)鐘外觀,提升桌面使用體驗(yàn)。此應(yīng)用適合需要常駐時(shí)間顯示的用戶,并能根據(jù)不同的使用環(huán)境提供適應(yīng)性調(diào)整,具有很好的實(shí)用性和可定制性。
到此這篇關(guān)于Python實(shí)現(xiàn)透明數(shù)字時(shí)鐘效果的文章就介紹到這了,更多相關(guān)Python透明數(shù)字時(shí)鐘內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pycharm遠(yuǎn)程連接docker容器的操作流程
這篇文章主要給大家介紹了pycharm遠(yuǎn)程連接docker容器的操作流程,文中通過代碼示例和圖文講解介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2023-08-08
Tensorflow 實(shí)現(xiàn)線性回歸模型的示例代碼
這篇文章主要介紹了Tensorflow 實(shí)現(xiàn)線性回歸模型,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
Python使用pymysql模塊操作mysql增刪改查實(shí)例分析
這篇文章主要介紹了Python使用pymsql模塊操作mysql增刪改查,結(jié)合實(shí)例形式分析了Python使用pymsql模塊針對(duì)mysql進(jìn)行增刪改查操作的相關(guān)實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2019-12-12
python抓取某汽車網(wǎng)數(shù)據(jù)解析html存入excel示例
python抓取某汽車網(wǎng)經(jīng)銷商信息網(wǎng)頁數(shù)據(jù)解析html,這里提供一個(gè)示例演示,大家可以根據(jù)需要分析自己網(wǎng)站的數(shù)據(jù)2013-12-12
Python任務(wù)自動(dòng)化工具tox使用教程
這篇文章主要介紹了Python任務(wù)自動(dòng)化工具tox使用教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Python3實(shí)現(xiàn)轉(zhuǎn)換Image圖片格式
本篇文章給大家分享了Python3實(shí)現(xiàn)在線轉(zhuǎn)換Image圖片格式的功能以及相關(guān)實(shí)例代碼,有興趣的朋友參考下。2018-06-06

