当前位置:首页 » tkinter » 正文

tkinter,让窗口右上角关闭按钮‘X’失效,禁用标题栏上的关闭按钮

 有不少情况,我们不希望用户点击窗体右上角的关闭按钮直接关闭窗体,而是希望用户点击窗体上设计的按钮或菜单退出。禁用标题栏上的关闭按钮,其实很简单,我们通过窗体的通信协议方法: protocol(消息,绑定函数) 来实现。

 窗体关闭的消息是: WM_DELETE_WINDOW

 绑定的函数名及内容由我们来定义。

   看看下面的代码:

from tkinter import *

def callback():
    pass # 这个函数不做任何事,实际上让关闭按钮失效

root=Tk()
root.protocol('WM_DELETE_WINDOW',callback) # 窗体的通信协议方法

but1=Button(root,text=" 退 出 ",command=root.destroy) # 只有通过这个退出按钮才可以退出程序
but1.pack(pady=10)

root.mainloop()

运行结果 

未命名.GIF

运行后,标题栏上的关闭按钮,虽然没有变灰,也可以点击,但点击没有任何反应,这说明关闭X按钮已经通过代码失效了。

我们可以通过窗体上的“退出”按钮直接退出窗体。


其实,我们也可以设计一下,让用户点击关闭按钮后,弹出一个对话框,让用户决定是否退出。

以下是代码:

from tkinter import *
from tkinter import messagebox

def callback():
    a=messagebox.askquestion("询问:","真要退出吗?") # 询问:是,否,yes,no
    if a=='yes':
        root.destroy() # 返回值为yes就退出

root=Tk()
root.protocol('WM_DELETE_WINDOW',callback)

root.mainloop()

运行后,点关闭按钮,可以根据用户的选择来决定是否退出程序。


此文章来自:wb98.com  网站还有相关的系列课程文章,感兴趣的可以前往。


打赏 支付宝打赏 微信打赏

来源:济亨网

本文链接:https://wb98.com/post/356.html

    << 上一篇 下一篇 >>

    湘公网安备 43011102000514号 - 湘ICP备08100508号