我知道我可以攔截按下X按鈕,protocol("WM_DELETE_WINDOW", do_something)但是我很難弄清楚如何激活此按鈕或至少是按下此按鈕時觸發(fā)的協(xié)議。這是情況。我有2節(jié)課。我的主要Tk班級和我的Menu班級。當我設置命令以使用exit菜單中的按鈕關(guān)閉程序時,我希望此按鈕X與Tk類上的按鈕執(zhí)行完全相同的操作?,F(xiàn)在我知道我可以簡單地調(diào)用傳遞給菜單類的控制器,然后調(diào)用我構(gòu)建的方法來處理關(guān)閉事件,但是我正在嘗試以不需要這樣做的方式構(gòu)建這個菜單類菜單類。這將允許我在幾乎不需要編輯的情況下在我構(gòu)建的任何應用程序上使用菜單類。我無法找到告訴我如何以編程方式激活"WM_DELETE_WINDOW"協(xié)議的帖子或某些文檔。如果不清楚我想要什么,這是一張圖片。只是我希望退出按鈕完全按照X按鈕的功能執(zhí)行。主要類: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)
以編程方式按下工具欄上的“X”按鈕?
函數(shù)式編程
2021-08-11 19:48:57