LINUX.ORG.RU

tcl/tk, мелькание окна при центрировании

 , , ,


0

2

Добрый день! Пишу программу на R c использованием пакета tcltk. Главное окно центрируется при помощи tkwm.geometry. На старте окно появляется в верхнем левом углу и только потом отрисовывается в центре. tkwm.withdraw не помогает. Насколько я помню, та же проблема была с питоновским tkinter. Мелькание еле заметное, но все же раздражает. Подскажите, как решить? Пример кода:

library(tcltk)

root = tktoplevel()
tkgrid.propagate(root,FALSE)

sw = as.integer(tkwinfo("screenwidth",root))
sh = as.integer(tkwinfo("screenheight",root))

width = 300
height = 200

xOff = (sw-width)/2;yOff = (sh-height)/2

GString = sprintf('%dx%d+%d+%d', width,height,xOff,yOff)

tkwm.geometry(root,GString)
tkwait.window(root) 



Последнее исправление: cetjs2 (всего исправлений: 2)

насколько я понял надо что то такое?

tt <- tktoplevel(width=«2000»,height=«300»); tkwm.withdraw(tt)

пока наполняется окно лучше его делать невидимым.

psv1967 ★★★★★
()
Ответ на: комментарий от EVP

да изредка прорывается, а первый раз так всегда ...

Tk_MoveToplevelWindow как я понял ?нереализовано?, да и эффект немедленной отрисовки останется наверное.

а вот так если ?

tt <- tktoplevel(width=«1»,height=«1»);tkwm.overrideredirect(tt);tkwm.withdraw(tt)

вроде как ничего не успевает? :)

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

Так лучше, но только из-за того, что проскакивает что-то очень маленькое. Эффекта от tkwm.overrideredirect(tt) не заметил. Кстати, интересный эффект: при использовании withdraw центрирование то работает, то нет. Интересно..

EVP
() автор топика
Ответ на: комментарий от EVP

Эффекта от tkwm.overrideredirect(tt) не заметил.

достаточно не гасить окно сразу и наличие декораций будет видно более чем.

psv1967 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.