Какие протоколы tkinter toplevel виджета существуют - PullRequest
0 голосов
/ 31 мая 2018

При использовании Tk.protocol аргументы могут быть «WM_DELETE_WINDOW», «WM_SAVE_YOURSELF» и «WM_TAKE_FOCUS»

Но есть ли еще что-нибудь.

Конкретно, в моей программе я хочу создать окно, которое следует за другим окном

root = Tk()
root.config(width = 100, height = 100
a = Tk()
a.overredirect()
#here I just make window stand below bottom left corner of original window
#I succeded in doing that, but it is not ellegant at all and partially functional
#does anybody knows how to do it better
#note: this is not the main problem
a.geometry('%ix40+%s+%s' % (180,
                            int(g[g.index('+')+1:g.rindex('+')]) + 8,
                            int(g[g.rindex('+')+1:]) + 51 +
                            int(g[g.index('x')+1:g.index('+')])))

, и здесь я должен сделать "a" следовать за "корнем", если root перемещается на экране

Мой реальный вопрос, какие существуют другие протоколы или где я могу найти их все

1 Ответ

0 голосов
/ 31 мая 2018

Вот ответ, который вы ищете:

Q.Есть ли способ получить список доступных протоколов для протокола wm?На страницах руководства перечислены только очевидные / общие (WM_DELETE_WINDOW, WM_SAVE_YOURSELF и WM_TAKE_FOCUS).

A.Это единственные три, определенные ICCCM;спецификация freedesktop.org [EWMH] также определяет _NET_WM_PING.

Обратите внимание, что WM_SAVE_YOURSELF устарела, и приложения Tk не могут правильно реализовать WM_TAKE_FOCUS или _NET_WM_PING, поэтому WM_DELETE_WINDOW - единственный, который должен использоваться 100.

DKF: Tk теперь обрабатывает для вас _NET_WM_PING правильным образом;вы никогда не увидите этого на уровне сценария.(Цель протокола состоит в том, чтобы позволить другим клиентам - особенно оконному менеджеру или менеджеру сеанса - положительно определить, обрабатывает ли приложение события. Это делает его реализацию правильно скрытой в кишках Tk.)

Источник: https://wiki.tcl.tk/8454

...