python - 如何从 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
方法中?
解决方案
使用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>'))
推荐阅读
- vba - Excel VBA-代码突然出现运行时错误91(自动筛选)
- python - django allow_tags 有时在 changeview 中不起作用
- apache-spark - 是 pipeline.fit 转换或动作
- mysql - MySQL左外连接与where子句
- java - Java-new 实例无法获取静态方法
- cordova - Ionic V4(beta 11)文件插件似乎不适用于 V4
- ios - 字体在 iPhone X 中看起来很混乱,而在 iPhone 7 中看起来不错
- ios - 将 CGPoint 数组传回 swift
- php - 使用 paypal rest payment api 减一美分
- java - 如何修复 org.springframework.data.redis.RedisConnectionFailureException:java.net.SocketTimeoutException:读取超时