【问题标题】:What protocols of tkinter toplevel widget are theretkinter 顶级小部件的协议有哪些
【发布时间】:2018-05-31 18:40:58
【问题描述】:

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

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

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

【问题讨论】:

  • 您想要的是绑定而不是协议。您可以使用<Configure> 事件来跟踪窗口并跟随另一个窗口。这需要一些跟踪,但设置起来应该足够简单。

标签: python tkinter protocols toplevel


【解决方案1】:

这是您要寻找的答案:

问。有没有办法获取 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多