思路:基于Python+tkiner的程序,在单机右上角X按钮关闭程序时,会触发'WM_DELETE_WINDOW'消息,如果可以截获这个消息并改变其行为,就可以禁止关闭程序。
具体实现和应用:在我开发的“课堂教学管理系统”中,因为有屏幕广播的功能,所以不允许学生关闭客户端,这样可以在最大程度上保证学生的学习效果(最起码不能在电脑上做学习之外的其他事情)。
def closeWindow():
tkinter.messagebox.showerror(title='警告',\
message='不许关闭,好好学习!')
return
root.protocol('WM_DELETE_WINDOW', closeWindow)
上面的代码加入到学生端代码之后,单机右上角X按钮关闭系统时会被禁止,并弹出下面的窗口:
但是这样的实现有个缺陷,如果打开任务管理器然后结束Python进程的话,仍可以关闭程序,不过这可以通过守护进程来避免和解决,后面再单独行文进行介绍。