【问题标题】:Get all default bindings for Button widget?获取 Button 小部件的所有默认绑定?
【发布时间】:2022-12-18 18:48:04
【问题描述】:

有没有办法在 tkinter 中获取 tk.Button 小部件的所有默认绑定?
像这样(伪代码):

>>> all_bindings = root.get_default_bindings(tk.Button) 
>>> print(all_bindings)
{"tk.Button": {"<<SelectAll>>" : "<Control-/>", "<<SelectNone>>" : "<Control-backslash>", "<<Pressed>>" : "<Button-1"}}

我认为他们在 TCL 中称其为“常见的虚拟事件”

【问题讨论】:

    标签: tkinter


    【解决方案1】:

    有没有办法在 tkinter 中获取 tk.Button 小部件的所有默认绑定?

    如果你调用 bind_class 给它 Button 类,它将返回一个绑定元组。

    print(root.bind_class("Button"))
    

    当我运行上面的命令时,我得到以下信息:

    ('<ButtonRelease-1>', '<Button-1>', '<Leave>', '<Enter>', '<<Invoke>>', '<Key-space>')
    

    如果您想查看哪些代码绑定到某个事件,您可以将事件与类一起传递:

    print(root.bind_class("Button", "<<Invoke>>"))
    

    如果您在默认绑定上这样做,您可能会得到一个代表一个或多个 tcl 命令的字符串。如果您在自定义绑定上执行此操作,您将获得调用 python 函数的自动生成函数的名称。

    【讨论】:

    • 谢谢你。有没有办法打印出与事件的关联。就像知道调用的事件:a.e '<Button-1>' : <<Press>>?
    • 也许我说错了。事件是“<Button-1>”,处理程序是 <<ButtonClicked>>,有没有办法打印出这些默认处理程序?
    • @Module_art 我想你是在谈论事件调用。您必须绑定每个函数以调用一个函数并在那里打印出事件。这是一个简单的例子ibb.co/7SbM63z
    • @Mike-SMT 好的,谢谢。
    • 您可以使用event_info 获取定义虚拟事件的序列(例如:root.event_info("&lt;&lt;PrevWord&gt;&gt;")
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 2015-02-06
    • 1970-01-01
    相关资源
    最近更新 更多