如何从 tkinter 中的绑定回调中获取回调引用?

How can I grab the callback reference from a bound callback in tkinter?

我遇到以下问题:我需要将小部件从一个容器移动到另一个容器。我主要通过复制小部件以及该小部件中包含的所有内容并删除原始小部件来实现它。

唯一需要解决的问题是将回调绑定到原始小部件的情况,除非我可以获得对回调函数的引用,否则我无法将其重新绑定到新的小部件。

例如:

import tkinter as tk


def callback(ev):
    print('entered')

root = tk.Tk()
frame = tk.Frame(root)
frame.bind('<Enter>', callback)
print(frame.bind())  # ('<Enter>', )
print(frame.bind('<Enter>')  # 'if {"[64351688callback %# %b %f %h %k %s %t %w %x %y %A %E %K %N %W %T %X %Y %D]" == "break"} break\n'

由于 widget.bind(key) 没有 return 回调函数的引用,我还可以如何获取该引用而不必直接挂接到 bind 方法?

使用 print( tk.__file__ ) 您可以获得源代码的路径并查看它是如何工作的。

在我发现的源代码中,您可以使用此字符串作为回调

'if {"[64351688callback %# %b %f %h %k %s %t %w %x %y %A %E %K %N %W %T %X %Y %D]" == "break"} break\n'

所以你可以做到

other_frame.bind('<Enter>', frame.bind('<Enter>'))