Python实现定时自动关闭的tkinter窗口方法

下面是详细讲解“Python实现定时自动关闭的tkinter窗口方法”的完整攻略:

下面是详细讲解“Python实现定时自动关闭的tkinter窗口方法”的完整攻略:

前言

在实现Python GUI图形界面开发中,很多情况下涉及到需要定时关闭tkinter窗口,比如当我们需要弹出一个提示框,显示一些重要的信息并在几秒钟后自动消失时。本文将介绍两种Python实现定时自动关闭的tkinter窗口方法的具体过程。

方法一:使用after()方法实现

after() 方法可以在指定的毫秒数后调用指定的函数。如下所示,我们可以在创建窗口对象时设置计时器(after()),当计时器到达指定时间时,就直接关闭窗口。示例如下:

import tkinter as tk
import time

class CloseWindow():
    def __init__(self, window, timer):
        self.window = window
        self.timer = timer

    def close(self):
        self.window.destroy()
        print("窗口关闭了")

    def start(self):
        self.window.after(self.timer, self.close)

def main():
    app = tk.Tk()
    app.title('自动关闭窗口')
    app.geometry("500x200+200+100")
    data = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
    label = tk.Label(app, text='本窗口将在3秒后自动关闭\n' + data)
    label.pack()
    CloseWindow(app, 3000).start()
    app.mainloop()

if __name__ == '__main__':
    main()

上述示例代码创建了一个用于自动关闭窗口的类CloseWindow,初始化时需传入一个window对象和一个timer时间参数(单位为毫秒)。在类的start()方法中,使用window对象的after()方法设置计时器,当计时器时间到达时调用类的close()方法,实现窗口的自动关闭。

方法二:使用Threading模块实现

Threading模块是Python中实现多线程的模块,通过给定一个定时删除的时间,运行主线程,把删除窗口的任务放到另外一个子线程中,等时间到了,子线程就开始运行,将需要删除的窗口作为参数传递到子线程中,并在子线程中通过time.sleep()计时,实现自动关闭窗口。示例如下:

import tkinter as tk
import threading
import time

class MyThread(threading.Thread):
    def __init__(self, window, timer):
        threading.Thread.__init__(self)
        self.window = window
        self.timer = timer

    def run(self):
        time.sleep(self.timer)        
        self.window.destroy()
        print("窗口关闭了")

def main():
    app = tk.Tk()
    app.title('自动关闭窗口')
    app.geometry("500x200+200+100")
    data = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
    label = tk.Label(app, text='本窗口将在5秒后自动关闭\n' + data)
    label.pack()
    MyThread(app, 5000).start()
    app.mainloop()

if __name__ == '__main__':
    main()

上述示例代码创建了一个继承自Thread的子类MyThread,初始化时需传入一个window对象和一个timer时间参数(单位为秒)。在子类的run()方法中,通过time.sleep()方法实现计时,当计时到达指定时间时,调用window对象的destroy()方法实现自动关闭窗口。在主函数中创建MyThread对象并启动线程即可实现自动关闭。

结语

本文介绍了两种Python实现定时自动关闭的tkinter窗口方法,上述两种方法都可以根据自己的需要选择,均可以实现窗口自动关闭。

本文标题为:Python实现定时自动关闭的tkinter窗口方法

基础教程推荐