首页 > 解决方案 > 如何从 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)不返回对回调函数的引用,我还能如何获取该引用而无需直接挂钩到bind方法中?

标签: pythontkintertclbind

解决方案


使用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>'))

推荐阅读