利用Python打造一個美觀的桌面溫馨提醒彈窗
效果



功能亮點(diǎn)
- 美觀的UI設(shè)計(jì):采用現(xiàn)代化配色方案,柔和而不刺眼
- 隨機(jī)位置顯示:每次出現(xiàn)在屏幕不同位置,避免視覺疲勞
- 多樣化內(nèi)容:豐富的提示語和emoji圖標(biāo)
- 自動管理:幾秒后自動關(guān)閉,不干擾工作
- 交互便捷:支持點(diǎn)擊關(guān)閉,用戶體驗(yàn)良好
源碼如下:
import random
import time
import tkinter as tk
from tkinter import ttk
import os
# 抑制libpng警告
os.environ['TK_SILENCE_DEPRECATION'] = '1'
def create_beautiful_tip():
# 創(chuàng)建窗口
window = tk.Toplevel()
# 獲取屏幕寬高
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
# 窗口尺寸和位置
window_width = 300
window_height = 120
x = random.randint(100, screen_width - window_width - 100)
y = random.randint(100, screen_height - window_height - 100)
# 窗口設(shè)置
window.geometry(f"{window_width}x{window_height}+{x}+{y}")
window.resizable(False, False)
window.attributes('-topmost', True)
# 顏色方案
bg_colors = [
{'bg': '#FFE4E6', 'fg': '#BE123C', 'accent': '#FB7185'},
{'bg': '#F0F9FF', 'fg': '#0369A1', 'accent': '#0EA5E9'},
{'bg': '#F0FDF4', 'fg': '#15803D', 'accent': '#22C55E'},
{'bg': '#FEF7CD', 'fg': '#854D0E', 'accent': '#EAB308'},
{'bg': '#FAF5FF', 'fg': '#7C3AED', 'accent': '#A855F7'},
]
scheme = random.choice(bg_colors)
# 設(shè)置窗口背景
window.configure(bg=scheme['bg'])
# 提示文字
tips = [
'?? 記得多喝水哦~', '?? 保持微笑,好運(yùn)自然來', '? 今天也要元?dú)鉂M滿!',
'?? 多吃水果身體好', '?? 保持好心情最重要', '?? 好好愛自己呀',
'?? 有人在想你哦~', '?? 夢想一定會成真', '?? 期待下一次見面',
'?? 一切都會順順利利', '?? 早點(diǎn)休息別熬夜', '?? 今天過得開心嗎?',
'?? 天冷了,記得添衣', '?? 學(xué)習(xí)工作要勞逸結(jié)合', '?? 聽首歌放松一下吧',
'?? 出去走走,呼吸新鮮空氣', '?? 你是最棒的!', '?? 保持創(chuàng)造力',
'?? 記得聯(lián)系老朋友', '?? 適當(dāng)獎勵自己', '?? 聞聞花香,心情變好'
]
tip = random.choice(tips)
# 創(chuàng)建內(nèi)容
# 圖標(biāo)
icons = ['??', '?', '??', '??', '??', '??', '??']
icon_label = tk.Label(
window,
text=random.choice(icons),
bg=scheme['bg'],
fg=scheme['accent'],
font=('Arial', 20)
)
icon_label.place(x=20, y=30)
# 提示文字
tip_label = tk.Label(
window,
text=tip,
bg=scheme['bg'],
fg=scheme['fg'],
font=('微軟雅黑', 12),
wraplength=200,
justify='left'
)
tip_label.place(x=60, y=30)
# 關(guān)閉按鈕
close_btn = tk.Button(
window,
text='關(guān)閉',
bg=scheme['accent'],
fg='white',
font=('微軟雅黑', 9),
command=window.destroy,
relief='flat',
bd=0
)
close_btn.place(x=window_width - 60, y=window_height - 30, width=50, height=25)
# 5秒后自動關(guān)閉
window.after(5000, window.destroy)
def main():
# 創(chuàng)建主窗口但不顯示
root = tk.Tk()
root.withdraw()
# 創(chuàng)建多個提示窗口
for i in range(300): # 創(chuàng)建5個窗口
create_beautiful_tip()
root.update() # 更新GUI
time.sleep(0.5) # 間隔0.5秒
# 退出程序
root.after(100000, root.destroy)
root.mainloop()
if __name__ == '__main__':
main()
代碼解析
1. 環(huán)境設(shè)置與導(dǎo)入
import random import time import tkinter as tk import os os.environ['TK_SILENCE_DEPRECATION'] = '1'
這里我們導(dǎo)入了必要的庫,并設(shè)置環(huán)境變量來抑制Tkinter可能產(chǎn)生的libpng警告。
2. 彈窗創(chuàng)建函數(shù)
create_beautiful_tip() 函數(shù)是程序的核心,負(fù)責(zé)創(chuàng)建單個提示窗口:
def create_beautiful_tip():
window = tk.Toplevel()
# 獲取屏幕尺寸并計(jì)算隨機(jī)位置
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
# ... 窗口設(shè)置代碼
我們使用Toplevel()創(chuàng)建新窗口,而不是Tk(),這樣可以在一個主程序下創(chuàng)建多個窗口。
3. 美觀的配色方案
color_schemes = [
{'bg': '#FFE4E6', 'fg': '#BE123C', 'accent': '#FB7185'}, # 粉色系
{'bg': '#F0F9FF', 'fg': '#0369A1', 'accent': '#0EA5E9'}, # 藍(lán)色系
# ... 更多配色
]
scheme = random.choice(color_schemes)
我們定義了幾組協(xié)調(diào)的配色方案,每次隨機(jī)選擇一組,使每個窗口都有獨(dú)特的視覺效果。
4. 內(nèi)容布局
# 圖標(biāo)
icon_label = tk.Label(
window,
text=random.choice(icons),
bg=scheme['bg'],
fg=scheme['accent'],
font=('Arial', 20)
)
icon_label.place(x=20, y=30)
# 提示文字
tip_label = tk.Label(
window,
text=tip,
bg=scheme['bg'],
fg=scheme['fg'],
font=('微軟雅黑', 12),
wraplength=200,
justify='left'
)
tip_label.place(x=60, y=30)
使用place幾何管理器精確定位圖標(biāo)和文字,確保布局整齊美觀。
5. 自動關(guān)閉機(jī)制
window.after(5000, window.destroy)
使用Tkinter的after方法設(shè)置5秒后自動關(guān)閉窗口,避免窗口一直占用屏幕空間。
運(yùn)行效果
運(yùn)行程序后,屏幕上會依次出現(xiàn)5個美觀的提示窗口,每個窗口:
- 顯示隨機(jī)選擇的溫馨話語
- 使用隨機(jī)配色方案
- 出現(xiàn)在屏幕隨機(jī)位置
- 5秒后自動消失
- 可隨時點(diǎn)擊關(guān)閉按鈕手動關(guān)閉
自定義建議
你可以根據(jù)自己的喜好進(jìn)行以下自定義:
- 修改提示內(nèi)容:編輯
tips列表,添加你自己的提示語 - 調(diào)整配色:在
color_schemes中添加或修改配色方案 - 更改顯示時間:修改
window.after(5000, ...)中的5000毫秒值 - 調(diào)整窗口數(shù)量:修改
range(5)中的數(shù)字來控制窗口數(shù)量 - 添加動畫效果:可以嘗試添加淡入淡出等動畫效果
技術(shù)要點(diǎn)
- 使用
Tkinter創(chuàng)建GUI界面 - 使用
Toplevel創(chuàng)建多個窗口 - 使用
place進(jìn)行精確布局 - 使用
after實(shí)現(xiàn)定時功能 - 隨機(jī)化增強(qiáng)用戶體驗(yàn)
總結(jié)
這個小小的Python程序展示了如何使用Tkinter創(chuàng)建美觀實(shí)用的桌面應(yīng)用。它不僅是一個溫馨的提醒工具,也是學(xué)習(xí)Python GUI編程的好例子。你可以在此基礎(chǔ)上繼續(xù)擴(kuò)展,比如添加設(shè)置界面、數(shù)據(jù)庫支持、網(wǎng)絡(luò)功能等,打造更加強(qiáng)大的個人助手應(yīng)用。
以上就是利用Python打造一個美觀的桌面溫馨提醒彈窗的詳細(xì)內(nèi)容,更多關(guān)于Python桌面提醒彈窗的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python使用PyAV提取視頻關(guān)鍵幀的實(shí)踐
本文主要介紹了Python使用PyAV提取視頻關(guān)鍵幀的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Anaconda虛擬環(huán)境中安裝cudatoolkit和cudnn包并配置tensorflow-gpu的教程
這篇文章詳細(xì)介紹了如何在Anaconda虛擬環(huán)境中配置PyTorch和TensorFlow-GPU,并提供了詳細(xì)的步驟和注意事項(xiàng),通過圖文講解的非常詳細(xì),需要的朋友可以參考下2025-02-02
Python使用文件鎖實(shí)現(xiàn)進(jìn)程間同步功能【基于fcntl模塊】
這篇文章主要介紹了Python使用文件鎖實(shí)現(xiàn)進(jìn)程間同步功能,結(jié)合實(shí)例形式分析了Python基于fcntl模塊文件鎖功能實(shí)現(xiàn)進(jìn)程間同步的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
Python 字典與字符串的互轉(zhuǎn)實(shí)例
下面小編就為大家?guī)硪黄狿ython 字典與字符串的互轉(zhuǎn)實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
Python學(xué)習(xí)之魔法函數(shù)(filter,map,reduce)詳解
這篇文章我們將來學(xué)習(xí)一下,Python中的三個高級函數(shù):filter()、map()、reduce(),這三個函數(shù)也被稱為魔法函數(shù),感興趣的小伙伴可以了解一下2022-04-04
連接pandas以及數(shù)組轉(zhuǎn)pandas的方法
今天小編就為大家分享一篇連接pandas以及數(shù)組轉(zhuǎn)pandas的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
解決Pycharm無法import自己安裝的第三方module問題
今天小編就為大家分享一篇解決Pycharm無法import自己安裝的第三方module問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05

