概述
- 在tkinter模块里面针对于大部分的事件都是与组件捆绑在一起处理的,但是窗体有个有意思的操作形式,即单击关闭可以直接结束程序进程,如果想在程序关闭之前进行一些处理,就不能使用原始的事件模式而应该通过协议事件处理
- 在tkinter组件中存在一种protocol(协议处理)的程序机制,这样可以方便地实现应用程序和程序窗体之间的交互管理,在该机制中最常用的是窗体关闭协议
WM_DELETE_WINDOW
,开发者可以利用此操作实现程序窗体关闭事件的处理。利用此操作可以防止用户关闭窗体时造成数据的丢失
处理窗口关闭
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.geometry("500x300")
root.title("protocol协议事件")
def close_root():
''' 关闭协议 '''
if messagebox.askyesno(title="关闭确认", message="确认关闭吗?"):
root.destroy()
if __name__ == '__main__':
root.protocol("WM_DELETE_WINDOW", close_root)
root.mainloop()