首页 > 解决方案 > Tkinter 画布绑定'' 事件到项目

问题描述

我错过了什么吗?我想我已经做了类似下面例子的事情。但是我既没有找到我希望的脚本,也没有在网上找到一些东西。基本上我想将Configure事件绑定到一个项目。是不是可能像错误提示的那样?

资源:画布tag_bind

import tkinter as tk

def do_something(event=None):
    print('something')
def stupid_workaround():
    if cnvs.coords(lbl) != lbl_coords:
        do_something()
        cnvs.coords(lbl, *lbl_coords)
    
    cnvs.after(200,stupid_workaround)

root = tk.Tk()
cnvs = tk. Canvas(root,highlightthickness=0)
lbl = cnvs.create_text(0,0, text='this is an exampel', anchor='nw')
lbl_coords = cnvs.coords(lbl)
btn = tk.Button(root, text='change coords', command=lambda:cnvs.coords(lbl,10,10))
btn.pack()
stupid_workaround()
#cnvs.bind(lbl, '<Configure>', do_something) #throws no error
#cnvs.tag_bind(lbl, '<Configure>', do_something) #throws error

cnvs.pack()
root.mainloop()

_tkinter.TclError:请求的非法事件;只能使用键、按钮、动作、进入、离开和虚拟事件

标签: pythontkintercanvas

解决方案


就像错误说的那样,你不能绑定到<Configure>事件,它根本不是一个选项。该事件仅对小部件有效,对画布上绘制的项目无效。


推荐阅读