窗口状态绑定? (的Tcl / Tk)

时间:2014-08-09 20:58:16

标签: binding tcl tk

如果窗口处于全屏模式(缩放状态),我想为顶层窗口状态创建一个绑定来执行命令。我一直在寻找如何做到这一点,我发现了这篇文章:How to catch the maximize signal in Tk?

我现在基本上都在尝试做同样的事情。这个问题是3年前发布的,有没有任何更新允许Tk处理最大化按钮?如果没有,有人可以解释下面的代码是做什么的吗?

bind $toplvl <Configure> {
    if {"%W" eq [winfo toplevel "%W"]} {
        ActOnResize %W %w %h [wm attributes %W -zoomed]
    }
}

1 个答案:

答案 0 :(得分:1)

好的,让我们一个接一个地看三条“有趣”的线条。

bind $toplvl <Configure> {

这会将<Configure>事件绑定到$toplvl中的绑定标记,我认为它是toplevel窗口小部件的名称。当窗口小部件的大小或位置发生变化时,会传递<Configure>事件(加上Tk并不真正使用的一些技术内容)。

if {"%W" eq [winfo toplevel "%W"]} {

首先,%W将替换为调度事件的窗口小部件的名称。这一行根据事件传递给实际的顶级窗口小部件来实现,这很有用,因为toplevels还会接收发送给所有子项的事件(非常适合绑定热键,对于其他事件来说不是很好)。

ActOnResize %W %w %h [wm attributes %W -zoomed]

这将调用命令ActOnResize,传入四个参数:(顶层)窗口小部件名称,新宽度,新高度以及顶层是否缩放(必须通过该调用检索)到wm attributes)。

高级别摘要

当顶层相对于其父窗口(在逻辑上是桌面根目录)更改大小或移动时调用ActOnResize,传入其新大小和一个布尔值,指示它是否& #39; s最大化。