Windows 当窗口改变位置时,如何执行特定代码?

Windows 当窗口改变位置时,如何执行特定代码?,windows,tcl,tk,Windows,Tcl,Tk,我想在用户单击窗口标题装饰并将鼠标拖动到新位置移动窗口时执行特定代码 命令“wm协议窗口?名称??命令?”用于管理窗口管理器消息,如wm_DELETE_window。 当窗口被移动时,尝试以下代码不会执行任何操作 package require Tk wm title . "move test" wm protocol . WM_MOVE {puts "window has been moved!"} Tk似乎不知道消息WM_MOVE,因此忽略了它。 但是,捕获WM_DELETE_窗口消息而

我想在用户单击窗口标题装饰并将鼠标拖动到新位置移动窗口时执行特定代码

命令“wm协议窗口?名称??命令?”用于管理窗口管理器消息,如wm_DELETE_window。 当窗口被移动时,尝试以下代码不会执行任何操作

package require Tk

wm title . "move test"
wm protocol . WM_MOVE {puts "window has been moved!"}
Tk似乎不知道消息WM_MOVE,因此忽略了它。 但是,捕获WM_DELETE_窗口消息而不是WM_MOVE上述代码可以工作

我错过什么了吗?
是否有其他方式对窗口位置的更改进行编程反应?

窗口位置应通过常规事件(即
事件)进行报告。试着做:

bind . <Configure> {puts x=%x,y=%y,width=%w,height=%h}
bind。{放置x=%x,y=%y,宽度=%w,高度=%h}
然后移动
窗口并调整其大小;您应该看到每个操作的事件。注意,事件不一定意味着移动;调整大小也将生成它们。与顶级上的任何绑定一样,您应该注意不要为其子窗口小部件报告它(请查看
%W
以解决此问题)。您可能会发现
%X
%Y
优于
%X
%Y
;实验