如果窗口处于全屏模式(缩放状态),我想为顶层窗口状态创建一个绑定来执行命令。我一直在寻找如何做到这一点,我发现了这篇文章: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]
}
}
答案 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最大化。