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

问题描述 投票:1回答:1

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

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

例如:

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方法的情况下我还能如何获取该引用?

python tkinter tcl bind
1个回答
3
投票

使用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>'))
© www.soinside.com 2019 - 2024. All rights reserved.