下面是详细讲解“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窗口方法 - Python技术站