最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?Tkinter實(shí)現(xiàn)滿(mǎn)屏隨機(jī)彈出溫馨提示對(duì)話(huà)框完整代碼

 更新時(shí)間:2025年11月25日 08:29:47   作者:-大頭.  
Tkinter是Python的標(biāo)準(zhǔn)GUI庫(kù),它提供了創(chuàng)建GUI應(yīng)用程序所需的各種組件和工具,這篇文章主要介紹了Python?Tkinter實(shí)現(xiàn)滿(mǎn)屏隨機(jī)彈出溫馨提示對(duì)話(huà)框的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

今天我要分享一個(gè)有趣的 Python 項(xiàng)目——使用 Tkinter 創(chuàng)建滿(mǎn)屏隨機(jī)彈出的溫馨提示對(duì)話(huà)框。這個(gè)項(xiàng)目結(jié)合了 GUI 編程、多線(xiàn)程和動(dòng)畫(huà)效果,最終實(shí)現(xiàn)了一個(gè)視覺(jué)上很吸引人的效果。

項(xiàng)目效果

運(yùn)行程序后,你會(huì)看到無(wú)數(shù)個(gè)小小的對(duì)話(huà)框隨機(jī)從屏幕各處跳出來(lái),每個(gè)對(duì)話(huà)框都顯示著不同的溫馨話(huà)語(yǔ),比如"多喝水哦~??"、"保持微笑呀??"等。這些對(duì)話(huà)框以柔和的顏色顯示,在屏幕上停留2-4秒后自動(dòng)消失,點(diǎn)擊任意對(duì)話(huà)框可以立即關(guān)閉。

完整代碼

import tkinter as tk
import random
import time
import threading

class TipWindowManager:
    """溫馨提示窗口管理器"""
    
    def __init__(self):
        self.root = tk.Tk()
        self.root.withdraw()
        self.active_windows = []
        self.windows_created = 0
        
        # 配置參數(shù)
        self.window_count = 150  # 窗口數(shù)量
        self.batch_size = 1      # 每次只創(chuàng)建一個(gè),實(shí)現(xiàn)隨機(jī)跳出效果
        self.create_interval = 0.05  # 創(chuàng)建間隔
        
        # 獲取屏幕尺寸
        self.screen_width = self.root.winfo_screenwidth()
        self.screen_height = self.root.winfo_screenheight()
        
        print(f"??? 屏幕尺寸: {self.screen_width} x {self.screen_height}")
        
        # 豐富的提示內(nèi)容庫(kù)
        self.tips = [
            '多喝水哦~??', '保持微笑呀??', '每天都要元?dú)鉂M(mǎn)滿(mǎn)?',
            '記得吃水果??', '保持好心情??', '好好愛(ài)自己??',
            '期待下一次見(jiàn)面??', '順順利利??', '早點(diǎn)休息??',
            '愿所有煩惱都消失??', '別熬夜?', '今天過(guò)得開(kāi)心嘛??',
            '天冷了,多穿衣服??',  '保護(hù)眼睛哦??',
            '深呼吸放松一下???', '你真棒!??', '一切都會(huì)好的??',
            '保持積極心態(tài)?',  '加油!??',
            '相信自己??', '今天也是美好的一天??', '保持耐心?',
            '慢慢來(lái)比較快??', '你很特別??', '世界因你而美麗??',
            '放松一下??', '享受當(dāng)下??', '感恩生活??',
            '保持好奇心??', '勇敢做自己??', '進(jìn)步一點(diǎn)點(diǎn)??',
            '溫暖如春??', '心平氣和??', '夢(mèng)想成真??',
            '快樂(lè)很簡(jiǎn)單??', '陽(yáng)光總在風(fēng)雨后???', '堅(jiān)持就是勝利??',
            '你是最棒的?', '生活很美好??', '向前看??',
            '溫柔待人??', '珍惜當(dāng)下??', '幸福在身邊??'
        ]
        
        # 柔和的背景顏色庫(kù)
        self.bg_colors = [
            '#FFF0F5', '#F0FFFF', '#F5FFFA', '#FFF8DC', '#F0F8FF',
            '#F8F8FF', '#F5F5F5', '#FAFAD2', '#E6E6FA', '#FFE4E1',
            '#FFFAF0', '#FDF5E6', '#FAF0E6', '#FFF5EE', '#F0FFF0',
            '#F5F5DC', '#FFEFD5', '#FFE4B5', '#FAF0E6', '#F8F8FF',
            '#F0F8FF', '#E0FFFF', '#E6E6FA', '#FFF0F5', '#FFE4E1',
            '#FFFAFA', '#F5F5F5', '#F0F0F0', '#FFF8DC', '#FFE4C4',
            '#FFDAB9', '#FFEFD5', '#FFFACD', '#F0E68C', '#E6E6FA',
            '#D8BFD8', '#DDA0DD', '#EE82EE', '#DA70D6', '#FFB6C1'
        ]

    def create_random_window(self):
        """隨機(jī)創(chuàng)建一個(gè)對(duì)話(huà)框"""
        if self.windows_created >= self.window_count:
            return
            
        try:
            window = tk.Toplevel()
            self.active_windows.append(window)
            self.windows_created += 1

            # 隨機(jī)窗口尺寸
            window_width = random.randint(220, 300)
            window_height = random.randint(90, 130)

            # 完全隨機(jī)位置 - 確保在屏幕內(nèi)
            x = random.randint(10, max(20, self.screen_width - window_width - 10))
            y = random.randint(10, max(20, self.screen_height - window_height - 10))

            # 對(duì)話(huà)框設(shè)置
            window.title('溫馨提示')
            window.geometry(f"{window_width}x{window_height}+{x}+{y}")
            window.resizable(False, False)

            # 隨機(jī)選擇內(nèi)容和顏色
            tip_text = random.choice(self.tips)
            bg_color = random.choice(self.bg_colors)

            # 創(chuàng)建內(nèi)容
            label = tk.Label(
                window,
                text=tip_text,
                bg=bg_color,
                fg='#2F4F4F',
                font=('微軟雅黑', random.randint(11, 13)),
                padx=18,
                pady=22,
                wraplength=window_width - 36,
                justify='center',
                relief='flat',
                bd=1
            )
            label.pack(expand=True, fill='both')

            # 窗口置頂
            window.attributes('-topmost', True)
            window.attributes('-alpha', 0.95)

            # 關(guān)閉時(shí)間:2-4秒
            close_time = random.randint(2000, 4000)
            
            def close_window():
                try:
                    if window.winfo_exists():
                        # 快速淡出
                        for alpha in range(95, 0, -10):
                            if window.winfo_exists():
                                window.attributes('-alpha', alpha/100)
                                window.update()
                                time.sleep(0.01)
                        window.destroy()
                        if window in self.active_windows:
                            self.active_windows.remove(window)
                except:
                    pass

            window.after(close_time, close_window)

            # 點(diǎn)擊立即關(guān)閉
            def on_click(event):
                try:
                    if window.winfo_exists():
                        window.destroy()
                        if window in self.active_windows:
                            self.active_windows.remove(window)
                except:
                    pass

            window.bind('<Button-1>', on_click)
            label.bind('<Button-1>', on_click)
            
            # 顯示創(chuàng)建進(jìn)度
            if self.windows_created % 10 == 0:
                print(f"?? 已創(chuàng)建 {self.windows_created}/{self.window_count} 個(gè)對(duì)話(huà)框")

        except Exception as e:
            print(f"創(chuàng)建窗口時(shí)出錯(cuò): {e}")

    def check_completion(self):
        """檢查是否所有窗口都已關(guān)閉"""
        if len(self.active_windows) == 0 and self.windows_created >= self.window_count:
            print("?? 所有溫馨提示已顯示完畢!")
            self.root.quit()
        else:
            self.root.after(500, self.check_completion)

    def start_random_creation(self):
        """開(kāi)始隨機(jī)創(chuàng)建窗口"""
        def create_loop():
            print("?? 開(kāi)始隨機(jī)彈出對(duì)話(huà)框...")
            start_time = time.time()
            
            # 持續(xù)創(chuàng)建直到達(dá)到目標(biāo)數(shù)量
            while self.windows_created < self.window_count:
                # 在主線(xiàn)程中創(chuàng)建窗口
                self.root.after(0, self.create_random_window)
                # 隨機(jī)間隔,創(chuàng)造更自然的彈出效果
                time.sleep(random.uniform(0.03, 0.08))
            
            end_time = time.time()
            print(f"?? 所有 {self.window_count} 個(gè)對(duì)話(huà)框創(chuàng)建完成!耗時(shí): {end_time-start_time:.2f}秒")
            print("??? 屏幕已被隨機(jī)彈出的對(duì)話(huà)框鋪滿(mǎn)!")
            
            # 開(kāi)始檢查完成狀態(tài)
            self.root.after(2000, self.check_completion)

        return create_loop

    def main(self):
        """主程序"""
        
        # 顯示開(kāi)始信息
        print("=" * 60)
        print("?? 隨機(jī)彈出溫馨提示開(kāi)始!")
        print(f"?? 目標(biāo): {self.window_count} 個(gè)對(duì)話(huà)框")
        print("??  每個(gè)對(duì)話(huà)框顯示2-4秒")
        print("?? 點(diǎn)擊任意對(duì)話(huà)框立即關(guān)閉")
        print("=" * 60)

        # 在新線(xiàn)程中控制隨機(jī)創(chuàng)建
        thread = threading.Thread(target=self.start_random_creation(), daemon=True)
        thread.start()

        try:
            self.root.mainloop()
        except KeyboardInterrupt:
            print("\n?? 程序被用戶(hù)中斷")
        finally:
            print("?? 清理剩余對(duì)話(huà)框...")
            for window in self.active_windows[:]:
                try:
                    window.destroy()
                except:
                    pass
            self.root.quit()

def main():
    """主函數(shù)"""
    manager = TipWindowManager()
    manager.main()

if __name__ == "__main__":
    main()

總結(jié)

這個(gè)項(xiàng)目展示了如何使用 Python 的 Tkinter 庫(kù)創(chuàng)建有趣的 GUI 效果。通過(guò)結(jié)合多線(xiàn)程、隨機(jī)化和動(dòng)畫(huà)效果,我們實(shí)現(xiàn)了一個(gè)既美觀又實(shí)用的應(yīng)用程序。代碼結(jié)構(gòu)清晰,易于理解和修改,適合初學(xué)者學(xué)習(xí) GUI 編程。

不想運(yùn)行的也可以下載exe文件。

到此這篇關(guān)于Python Tkinter實(shí)現(xiàn)滿(mǎn)屏隨機(jī)彈出溫馨提示對(duì)話(huà)框的文章就介紹到這了,更多相關(guān)Python Tkinter滿(mǎn)屏隨機(jī)彈出溫馨提示對(duì)話(huà)框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

吴忠市| 怀宁县| 尚志市| 漾濞| 威远县| 尤溪县| 龙陵县| 深圳市| 三江| 新宁县| 韩城市| 襄樊市| 宽城| 浏阳市| 红河县| 全椒县| 上蔡县| 息烽县| 潢川县| 广水市| 潼南县| 昌江| 前郭尔| 耿马| 南昌县| 招远市| 南召县| 南通市| 辽阳市| 南安市| 满洲里市| 南昌市| 诏安县| 克什克腾旗| 五台县| 花莲县| 精河县| 甘泉县| 独山县| 仁寿县| 庆元县|