Tcl/Tk: Максимизируйте окно / определяют, максимизируется ли окно?

Я могу узнать, максимизируется ли мое окно верхнего уровня, и я могу максимизировать его программно? Я использую пакет R tcltk 8.5 на Windows XP.

Причина вопроса: Я хочу осуществить a <Visibility> событие путем вызова сначала уходит и затем deiconify. Однако, если окно максимизировалось перед этими двумя вызовами функции это не после этих вызовов. Существует ли более легкий способ осуществить событие?

1
задан Karsten W. 6 August 2010 в 22:58
поделиться

2 ответа

Вы можете определить, развернуто ли окно с помощью wm state $ toplevel (ищите zoomed как возвращаемое значение). Но…

ОС не генерирует события должным образом для вас в Windows; вы получаете их только в отображаемом окне, и это немного отличается. (Windows сообщает вам гораздо меньше о порядке наложения и его последствиях, чем X; Tk довольно близок к модели X.) Однако вы не говорите, зачем вам это событие; возможно, есть что-то еще, что послужит вашей реальной цели?

1
ответ дан 2 September 2019 в 22:22
поделиться

Написал функцию, которая распространяет событие 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))
}

Таким образом, мне не нужно вызывать remove / deiconify и передавать свое событие каждому виджету.

1
ответ дан 2 September 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: