2010-10-01 75 views
3

每当最小化按钮被按下时,我有一个Tkinter窗口我想运行一个命令,我该怎么做?在Tkinter窗口最小化时运行一个命令

我知道w.protocol(“WM_DELETE_WINDOW”,w.command)将在退出时运行命令。

+0

我一直在寻找所有这些的Tcl文档,我不认为有一种方法来实现这一点。除了WM_DELETE_WINDOW之外,我看到的唯一协议是WM_SAVE_YOURSELF,它已被弃用,而不是您想要的,WM_TAKE_FOCUS根据手册页显示“太复杂了”。出于好奇,你想做什么? – 2010-10-01 04:44:46

+0

我有一个工具窗口以及我的主程序。当我最小化主程序时,我也会将工具窗口隐藏起来。 – rectangletangle 2010-10-01 07:34:48

回答

4

您可以绑定到​​事件。

例如,运行以下代码,然后最小化主窗口。主窗口最小化时,工具窗口应该消失。

import Tkinter as tk 

class App: 
    def __init__(self): 
     self.root = tk.Tk() 
     tk.Label(self.root, text="main window").pack() 
     self.t = tk.Toplevel() 
     tk.Label(self.t, text="tool window").pack() 
     self.root.bind("<Unmap>", self.OnUnmap) 
     self.root.bind("<Map>", self.OnMap) 
     self.root.mainloop() 

    def OnMap(self, event): 
     # show the tool window 
     self.t.wm_deiconify() 

    def OnUnmap(self, event): 
     # withdraw the tool window 
     self.t.wm_withdraw() 

if __name__ == "__main__": 
    app=App() 
+0

谢谢你的完美! – rectangletangle 2010-10-01 18:42:07