Установка стилей окна с помощью Tkinter / Tcl: нет кнопки выхода - PullRequest
3 голосов
/ 12 мая 2011

Я знаю, что Tkinter - это просто тонкий слой над Tcl / Tk.Tkinter вы можете сделать несколько вещей, чтобы изменить стиль окон.Одним из примеров будет root.attributes('-toolwindow', True).Это изменило бы стиль окна на стиль окна инструмента.Тем не менее, я смотрю немного ниже уровня.

Я подозреваю, что в какой-то момент Tcl / Tk ссылается на Windows стили окна .Я почти уверен, что это нужно сделать, чтобы установить стиль окна и, соответственно, стиль окна Tkinter.Я пытаюсь создать окно Tkinter, которое, я уверен, это стиль WS_DLGFRAME .Однако я не уверен, как подойти к этому.

Мне интересно, где в части Tcl / Tk Tkinter он назначает стили окон, и что я должен был бы добавить, чтобы получить этот стиль.

Конечная цель состоит в том, чтобы получить стиль рамки окна Tkinter, подобный показанному ниже (обратите внимание, что в нем отсутствует кнопка выхода):

enter image description here

Этов Windows 7, кстати.

Ответы [ 2 ]

5 голосов
/ 12 мая 2011

Следующая опция указывает диспетчеру окон не украшать окно (т.е. нет заголовка и кнопок окна, плюс нет границ)

root.overrideredirect(True)

Ложный аргумент восстанавливает украшения.

3 голосов
/ 12 мая 2011

Если вы знакомы с C, скачайте Исходный код Tk .

Я посмотрел быстро, и в этом файле: ./win/tkWinWm.c в строке 3072 (tk859-src.zip),у вас есть функция static int WmAttributesCmd(), имеющая дело с -toolwindow, как вы сказали, позже обновленная на UpdateWrapper().

Так что нет простого способа изменить ее, если вы не измените исходный код Tk.

В качестве альтернативы вы можете использовать FindWindow и искать класс окна Tk TK_WIN_CHILD_CLASS_NAME, определенный как TkChild, а затем использовать SetWindowLongPtr( GWLP_STYLE, ...) для изменения стиля (но для этого требуется некоторый вызов ffi для C или другойзначит).

Я сам не знаком ни с Tcl / Tk, так что возьмите его с крошкой соли.Почему бы не попробовать сообщество Tcl / Tk?

...