【问题标题】:List of Sequences Available for Each TKinter Widget每个 TKinter 小部件可用的序列列表
【发布时间】:2013-05-04 06:04:06
【问题描述】:

对于每个 Tkinter 小部件,是否有一个参考站点包含​​所有可用于绑定的序列的列表?

例如,我可以使用以下代码将回调绑定到 TreeView:

tree.bind("<<TreeviewSelect>>", selection_changed)

但是,我似乎找不到一个好的资源来列出可以分配回调的所有可能事件。

【问题讨论】:

    标签: python tkinter tk


    【解决方案1】:

    您可以使用此代码获取某些小部件的事件(虚拟事件除外):

    from itertools import chain
    def get_events(widget):
        return set(chain.from_iterable(widget.bind_class(cls) for cls in widget.bindtags()))
    
    root = Tk()
    a = get_events(Button())
    print(a)
    root.destroy()
    
    >>> {'<KeyRelease-Alt_R>', '<Enter>', '<Key-space>', '<Button-1>', '<Key-Alt_R>', '<KeyRelease-F10>', '<<PrevWindow>>', '<Alt-Key>', '<Alt-KeyRelease>', '<ButtonRelease-1>', '<Leave>', '<KeyRelease-Alt_L>', '<Key-Alt_L>', '<Key-F10>', '<Key-Tab>'}
    

    和链接:Master list of all Tkinter Events?

    【讨论】:

    • +1:这是一个非常棘手的问题; Tk 内部有一个复杂的事件模型(随着支持非常广泛的应用程序而发展)。实际的绑定也是特定于平台的(或者更糟糕的是,如果你做了一些愚蠢的事情,比如打开传统的 Motif 兼容模式;不要那样做)。另外,请注意,某些小部件(尤其是画布)可以对内部的单个元素进行绑定。
    • 感谢所有帮助!我认为,鉴于 Tkinter 的所有怪癖,我最好改用 wxPython。
    猜你喜欢
    • 2014-07-07
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多