1

使用 Tk.protocol 时,参数可以是“WM_DELETE_WINDOW”、“WM_SAVE_YOURSELF”和“WM_TAKE_FOCUS”</p>

但是还有没有其他的。

具体来说,在我的程序中,我想创建一个跟随另一个窗口的窗口

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('+')])))

如果root在屏幕上移动,在这里我应该让“a”跟随“root”

我的实际问题还有哪些其他协议,或者我在哪里可以找到它们

4

1 回答 1

2

这是您正在寻找的答案:

问:有没有办法获取 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 是唯一应该使用的。

DKF:Tk 现在以正确的方式为您自己处理_NET_WM_PING;你永远不会在脚本级别看到这个。(该协议的目的是让其他客户端——尤其是窗口管理器或会话管理器——确定应用程序是否正在处理事件。这将其实现正确地埋在 Tk 的内部。)

来源:https ://wiki.tcl.tk/8454

于 2018-05-31T18:54:05.407 回答