LINUX.ORG.RU

Tkinter - overrideredirect


0

0

Подскажите, пожалуйста, как можно избавится от закрывающего крестика на окне. ТОчнее как избавиться я знаю - root.overrideredirect(1), но в этом случае невозможно ввести ничего, например в Entry.

######test.py#######

from Tkinter import *

root=Tk()

root.overrideredirect(1)

e= Entry(root)

e.takefocus=1

e.pack()

Button(root, text='close', command=root.destroy).pack()

root.mainloop()

####################

Что я делаю не так?

anonymous

imho - от закрывающего крестика избавляют WindowManager`ы, это те каторые fvwm end other..они же отвечают за декорации и поведение окон.

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

Да. так оно и есть. вот я и использую overrideredirect() - "instruct the window manager to ignore this widget if BOOLEAN is given with 1." Но как мне теперь активизировать поля ввода? Ведь как-то это делается...

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

а зачем убирать крестик ? 
вид портит ? ;-)
чтобы запретить (точнее контроллировать) процесс закрытия есть
`wm protocol` 
tcl/tk sample : 
# disable closing toplevel $win by wm
wm protocol $win WM_DELETE_WINDOW {
 puts "хрен закроешь ;-)"
}

на перл, я думаю, переведёте сами ;-)

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

да я знаю как root.protocol('WM_DELETE_WINDOW', pass) мне именно вид нужен - без крестика и всего остального тоже... /*начальство*/

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

возможно поможет http://wiki.tcl.tk/14473
и возможно configure -takefocus yes -state normal

P.S. imho, overrideredirect смешная штука и 
 её еффект зависит от используемого WM. 
 Приложение не может командовать оконным менеджером
 и все команды wm вообще говоря носят рекомендательный
 характер..

MKuznetsov ★★★★★
()

> я знаю - root.overrideredirect(1), но в этом случае невозможно ввести ничего, например в Entry.

Возможно это фатально. Точно не скажу, но в ряде wm, в частности в WINDOWS, при overredirect-нутых окнах может не работать переключение фокуса.

Может быть проще будет запретить работу крестика? Это проще.

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