为了账号安全,请及时绑定邮箱和手机立即绑定

以编程方式按下工具栏上的“X”按钮?

以编程方式按下工具栏上的“X”按钮?

函数式编程 2021-08-11 19:48:57
我知道我可以拦截按下X按钮,protocol("WM_DELETE_WINDOW", do_something)但是我很难弄清楚如何激活此按钮或至少是按下此按钮时触发的协议。这是情况。我有2节课。我的主要Tk班级和我的Menu班级。当我设置命令以使用exit菜单中的按钮关闭程序时,我希望此按钮X与Tk类上的按钮执行完全相同的操作。现在我知道我可以简单地调用传递给菜单类的控制器,然后调用我构建的方法来处理关闭事件,但是我正在尝试以不需要这样做的方式构建这个菜单类菜单类。这将允许我在几乎不需要编辑的情况下在我构建的任何应用程序上使用菜单类。我无法找到告诉我如何以编程方式激活"WM_DELETE_WINDOW"协议的帖子或某些文档。如果不清楚我想要什么,这是一张图片。只是我希望退出按钮完全按照X按钮的功能执行。主要类:import tkinter as tkimport PIP_MENUclass PIP(tk.Tk):    def __init__(self):        super().__init__()        PIP_MENU.start(self)        self.protocol("WM_DELETE_WINDOW", self.handle_close)    def handle_close(self):        print("Closing")        self.quit()if __name__ == '__main__':    PIP().mainloop()单独.py文件上的菜单类:import tkinter as tkclass Menu(tk.Menu):    def __init__(self, controller):        super().__init__()        self.controller = controller        controller.config(menu=self)        file_menu = tk.Menu(self, tearoff=0)        self.add_cascade(label="File", menu=file_menu)        file_menu.add_command(label="Exit", command=self.handle_exit)    def handle_exit(self):        # What can I do here that will be handled by        # protocol "WM_DELETE_WINDOW" of the main class?        # All I can find is destroy() and quit()        # But both of these do not get handled by "WM_DELETE_WINDOW".def start(controller):    Menu(controller)
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信