1

我可以确定我的顶层窗口是否已最大化,并且可以通过编程方式将其最大化吗?我在 Windows XP 上使用 R 的 tcltk 包 8.5。

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

4

2 回答 2

1

您可以发现窗口是否最大化wm state $toplevel(查找zoomed作为返回值)。但是……</p>

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

于 2010-08-09T02:27:14.613 回答
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 并将我的事件传递给每个小部件。

于 2010-08-07T07:36:39.250 回答