Tcl / Tk:最大化窗口/确定窗口是否最大化?

时间:2010-08-06 22:58:27

标签: r tcl tk

我可以查看我的顶层窗口是否已最大化,是否可以通过编程方式最大化它?我在Windows XP上使用R的tcltk软件包8.5。

问题的原因是:我想通过先调用撤销然后取消图标来强制执行<Visibility>事件。但是,如果在这两个函数调用之前窗口最大化,则不会在这些调用之后。是否有更简单的方法来强制执行此事件?

2 个答案:

答案 0 :(得分:1)

编写了一个将Visibility事件传播到给定窗口小部件及其所有子窗口的函数。

tkevent.propagate <- function(w,e) {
  tkevent.generate(w, e)
  children <- as.character(tkwinfo("children", w))
  if(length(children)>0) lapply(children, function(c) tkevent.propagate(c,e))
}

这样,我不需要调用withdraw / deiconify并将我的事件发送到每个小部件。

答案 1 :(得分:1)

您可以使用wm state $toplevel发现窗口是否已最大化(查找zoomed作为返回值)。但...

操作系统不会在Windows上为您正确生成<Visibility>个事件;你只能在被映射的窗口上得到它们,这是微妙的不同。 (Windows告诉你更少关于堆叠顺序及其后果比X更少; Tk非常接近X的模型。)你没有说出为什么你想要这个事件;或许有其他东西可以满足你的真正目的吗?