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

Python?Tkinter實現(xiàn)滿屏隨機彈出溫馨提示對話框完整代碼

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

前言

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

項目效果

運行程序后,你會看到無數(shù)個小小的對話框隨機從屏幕各處跳出來,每個對話框都顯示著不同的溫馨話語,比如"多喝水哦~??"、"保持微笑呀??"等。這些對話框以柔和的顏色顯示,在屏幕上停留2-4秒后自動消失,點擊任意對話框可以立即關(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)建一個,實現(xiàn)隨機跳出效果
        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)容庫
        self.tips = [
            '多喝水哦~??', '保持微笑呀??', '每天都要元氣滿滿?',
            '記得吃水果??', '保持好心情??', '好好愛自己??',
            '期待下一次見面??', '順順利利??', '早點休息??',
            '愿所有煩惱都消失??', '別熬夜?', '今天過得開心嘛??',
            '天冷了,多穿衣服??',  '保護眼睛哦??',
            '深呼吸放松一下???', '你真棒!??', '一切都會好的??',
            '保持積極心態(tài)?',  '加油!??',
            '相信自己??', '今天也是美好的一天??', '保持耐心?',
            '慢慢來比較快??', '你很特別??', '世界因你而美麗??',
            '放松一下??', '享受當下??', '感恩生活??',
            '保持好奇心??', '勇敢做自己??', '進步一點點??',
            '溫暖如春??', '心平氣和??', '夢想成真??',
            '快樂很簡單??', '陽光總在風(fēng)雨后???', '堅持就是勝利??',
            '你是最棒的?', '生活很美好??', '向前看??',
            '溫柔待人??', '珍惜當下??', '幸福在身邊??'
        ]
        
        # 柔和的背景顏色庫
        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):
        """隨機創(chuàng)建一個對話框"""
        if self.windows_created >= self.window_count:
            return
            
        try:
            window = tk.Toplevel()
            self.active_windows.append(window)
            self.windows_created += 1

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

            # 完全隨機位置 - 確保在屏幕內(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))

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

            # 隨機選擇內(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)閉時間: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)

            # 點擊立即關(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)建進度
            if self.windows_created % 10 == 0:
                print(f"?? 已創(chuàng)建 {self.windows_created}/{self.window_count} 個對話框")

        except Exception as e:
            print(f"創(chuàng)建窗口時出錯: {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):
        """開始隨機創(chuàng)建窗口"""
        def create_loop():
            print("?? 開始隨機彈出對話框...")
            start_time = time.time()
            
            # 持續(xù)創(chuàng)建直到達到目標數(shù)量
            while self.windows_created < self.window_count:
                # 在主線程中創(chuàng)建窗口
                self.root.after(0, self.create_random_window)
                # 隨機間隔,創(chuàng)造更自然的彈出效果
                time.sleep(random.uniform(0.03, 0.08))
            
            end_time = time.time()
            print(f"?? 所有 {self.window_count} 個對話框創(chuàng)建完成!耗時: {end_time-start_time:.2f}秒")
            print("??? 屏幕已被隨機彈出的對話框鋪滿!")
            
            # 開始檢查完成狀態(tài)
            self.root.after(2000, self.check_completion)

        return create_loop

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

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

        try:
            self.root.mainloop()
        except KeyboardInterrupt:
            print("\n?? 程序被用戶中斷")
        finally:
            print("?? 清理剩余對話框...")
            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é)

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

不想運行的也可以下載exe文件。

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

相關(guān)文章

最新評論

沙雅县| 特克斯县| 九台市| 同仁县| 工布江达县| 延长县| 双鸭山市| 盐亭县| 博野县| 肥东县| 宜城市| 宜宾市| 法库县| 临城县| 成安县| 烟台市| 潮安县| 临武县| 莱州市| 绩溪县| 张北县| 安岳县| 夹江县| 安丘市| 繁峙县| 西藏| 荃湾区| 九江市| 察哈| 木兰县| 旬邑县| 鸡西市| 弥勒县| 临泽县| 崇义县| 永平县| 岳西县| 旌德县| 信丰县| 准格尔旗| 汉阴县|