利用Python實(shí)現(xiàn)隨機(jī)浮動(dòng)鼓勵(lì)語(yǔ)彈窗效果

準(zhǔn)備工作:鼓勵(lì)語(yǔ)和主題
鼓勵(lì)語(yǔ)列表和主題配置。
- 鼓勵(lì)語(yǔ)列表:像“你是最棒的!”“今天也要元?dú)鉂M(mǎn)滿(mǎn)哦!”等等。每次彈窗都會(huì)隨機(jī)選一句,就像開(kāi)盲盒一樣。
messages = [
"你是最棒的!",
"今天也要元?dú)鉂M(mǎn)滿(mǎn)哦!",
"記得多喝水呀~",
"一切都會(huì)好起來(lái)",
"你真的超厲害!",
"加油,別放棄!",
"休息一下吧~",
"你值得被喜歡",
"今天也辛苦了!",
"未來(lái)可期呀!"
]
- 主題配置:這里面有各種不同風(fēng)格的主題,包括背景顏色(
bg)、文字顏色(fg)、按鈕顏色(btn)和圖標(biāo)(icon)。每次彈窗都會(huì)隨機(jī)選一個(gè)主題??。
themes = [
{"bg": "#fff0f3", "fg": "#e63946", "btn": "#e63946", "icon": "heart"},
{"bg": "#e0f7fa", "fg": "#0077b6", "btn": "#0077b6", "icon": "star"},
{"bg": "#f0f4f8", "fg": "#2a6fdb", "btn": "#2a6fdb", "icon": "smile"},
{"bg": "#f8f9fa", "fg": "#6c757d", "btn": "#6c757d", "icon": "thumbsup"},
{"bg": "#f0fff4", "fg": "#2e7d32", "btn": "#2e7d32", "icon": "leaf"},
{"bg": "#fff8e1", "fg": "#ff8f00", "btn": "#ff8f00", "icon": "sun"}
]
彈窗的誕生:FloatingPopup類(lèi)
- 初始化窗口:這個(gè)類(lèi)創(chuàng)建了一個(gè)頂層窗口,去掉邊框,讓它始終置頂,還設(shè)置了一點(diǎn)點(diǎn)透明效果,就像一個(gè)夢(mèng)幻的小泡泡??。
def __init__(self, master=None):
self.window = tk.Toplevel(master)
self.window.overrideredirect(True)
self.window.attributes("-topmost", True)
self.window.attributes("-alpha", 0.95)
- 隨機(jī)主題和位置:從主題配置里隨機(jī)選一個(gè)主題,然后把彈窗隨機(jī)放到屏幕的某個(gè)位置??。
self.theme = random.choice(themes)
self.window.configure(bg=self.theme["bg"])
self.window.geometry("220x100")
# 隨機(jī)
self.set_random_position()
- 創(chuàng)建彈窗內(nèi)容:彈窗里有圖標(biāo)、鼓勵(lì)語(yǔ)和關(guān)閉按鈕。圖標(biāo)用文字代替,鼓勵(lì)語(yǔ)也是隨機(jī)選的,按鈕一點(diǎn)就可以關(guān)閉彈窗啦。
# 頂部框架
top_frame = tk.Frame(self.window, bg=self.theme["bg"])
top_frame.pack(fill="x", padx=15, pady=(10, 5))
# 圖標(biāo)
icon_map = {"heart": "??", "star": "?", "smile": "??", "thumbsup": "??", "leaf": "??", "sun": "??"}
icon_label = tk.Label(
top_frame,
text=icon_map[self.theme["icon"]],
font=("Arial", 14),
bg=self.theme["bg"],
fg=self.theme["fg"]
)
icon_label.pack(side="left", padx=(0, 8))
# 文字
self.message = random.choice(messages)
text_label = tk.Label(
top_frame,
text=self.message,
font=font.Font(family="SimHei", size=11, weight="bold"),
bg=self.theme["bg"],
fg=self.theme["fg"],
wraplength=160,
justify="left"
)
text_label.pack(side="left", fill="x", expand=True)
# 按鈕
btn = tk.Button(
self.window,
text="知道啦",
bg=self.theme["btn"],
fg="white",
bd=0,
padx=10,
pady=2,
font=font.Font(size=9),
command=self.window.destroy
)
btn.pack(pady=(5, 10))
- 淡入動(dòng)畫(huà)和自動(dòng)關(guān)閉:彈窗出現(xiàn)的時(shí)候會(huì)有一個(gè)淡入的動(dòng)畫(huà)效果,就像慢慢浮現(xiàn)出來(lái)一樣?。20秒后自動(dòng)關(guān)閉,當(dāng)然你也可以手動(dòng)點(diǎn)擊按鈕關(guān)閉。
def fade_in(self):
for i in range(1, 11):
self.window.attributes("-alpha", i / 10)
self.window.update()
time.sleep(0.03)
# 20秒后自動(dòng)關(guān)閉(也可手動(dòng)點(diǎn)擊關(guān)閉)
self.window.after(20000, self.window.destroy)
循環(huán):popup_generator函數(shù)
while循環(huán),每隔1 - 2秒就隨機(jī)生成一個(gè)新的彈窗,“彈窗雨”。
def popup_generator():
# 循環(huán)生成彈窗
while True:
# 隨機(jī)間隔1-2秒生成一個(gè)新彈窗
interval = random.uniform(1, 2)
time.sleep(interval)
# 在主線(xiàn)程中創(chuàng)建彈窗
root.after(0, FloatingPopup)
項(xiàng)目啟動(dòng)
最后,咱們來(lái)啟動(dòng)這個(gè)項(xiàng)目吧。先隱藏主窗口,然后啟動(dòng)一個(gè)線(xiàn)程來(lái)運(yùn)行popup_generator函數(shù),這樣彈窗就會(huì)一個(gè)接一個(gè)地出現(xiàn)啦。如果想退出,按Ctrl + C就可以咯。
if __name__ == "__main__":
root = tk.Tk()
root.withdraw()
# 啟動(dòng)彈窗生成線(xiàn)程
thread = threading.Thread(target=popup_generator, daemon=True)
thread.start()
print("彈窗已啟動(dòng),按Ctrl+C退出")
try:
root.mainloop()
except KeyboardInterrupt:
root.destroy()
大家也可以自己動(dòng)手改改鼓勵(lì)語(yǔ)或者主題,讓它變得更符合自己的口味哦!
到此這篇關(guān)于利用Python實(shí)現(xiàn)隨機(jī)浮動(dòng)鼓勵(lì)語(yǔ)彈窗效果的文章就介紹到這了,更多相關(guān)Python隨機(jī)浮動(dòng)鼓勵(lì)語(yǔ)彈窗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入探究Python Numba庫(kù)編譯優(yōu)化利器
這篇文章主要為大家介紹了Python Numba庫(kù)編譯優(yōu)化利器深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Django配置Mysql數(shù)據(jù)庫(kù)連接的實(shí)現(xiàn)
本文主要介紹了Django配置Mysql數(shù)據(jù)庫(kù)連接的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python使用Flask-SQLAlchemy連接數(shù)據(jù)庫(kù)操作示例
這篇文章主要介紹了Python使用Flask-SQLAlchemy連接數(shù)據(jù)庫(kù)操作,簡(jiǎn)單介紹了flask、Mysql-Python以及Flask-SQLAlchemy的安裝方法,并結(jié)合實(shí)例形式分析了基于Flask-SQLAlchemy的數(shù)據(jù)庫(kù)連接相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
Dephi逆向工具Dede導(dǎo)出函數(shù)名MAP導(dǎo)入到IDA中的實(shí)現(xiàn)方法
這篇文章主要介紹了Dephi逆向工具Dede導(dǎo)出函數(shù)名MAP導(dǎo)入到IDA中,通過(guò)這個(gè)腳本,我們就可以把專(zhuān)業(yè)dephi程序分析的結(jié)果,轉(zhuǎn)移到IDA專(zhuān)業(yè)逆向代碼分析的平臺(tái),實(shí)現(xiàn)聯(lián)動(dòng),需要的朋友可以參考下2022-08-08

