Я могу узнать, максимизируется ли мое окно верхнего уровня, и я могу максимизировать его программно? Я использую пакет R tcltk 8.5 на Windows XP.
Причина вопроса: Я хочу осуществить a <Visibility>
событие путем вызова сначала уходит и затем deiconify. Однако, если окно максимизировалось перед этими двумя вызовами функции это не после этих вызовов. Существует ли более легкий способ осуществить событие?
Вы можете определить, развернуто ли окно с помощью wm state $ toplevel
(ищите zoomed
как возвращаемое значение). Но…
ОС не генерирует события
должным образом для вас в Windows; вы получаете их только в отображаемом окне, и это немного отличается. (Windows сообщает вам гораздо меньше о порядке наложения и его последствиях, чем X; Tk довольно близок к модели X.) Однако вы не говорите, зачем вам это событие; возможно, есть что-то еще, что послужит вашей реальной цели?
Написал функцию, которая распространяет событие 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 и передавать свое событие каждому виджету.