我无法弄清楚如何使用与画布关联的tag_bind
方法。我创建了oval
,并希望能够通过点击生成event
。当我这样做时,没有任何反应。 tag_bind
的正确用法是什么?
import tkinter as tk
class Window():
def __init__(self, master):
self.master = master
self.create_widgets()
def create_widgets(self):
self.c = tk.Canvas(self.master, bg='white', height=200, width=300)
self.c.pack()
b = tk.Button(self.master, text='Draw', command=self.draw)
b.pack()
def draw(self):
self.c.delete('all')
self.oval = self.c.create_oval([30,50], [130,80])
self.rect = self.c.create_rectangle([180,10], [280,80])
self.c.tag_bind(self.oval, '<Button-1>', self.oval_func)
def oval_func(self, event):
self.c.delete(self.rect)
self.c.create_text(150, 150, text='Hello, world!', anchor='w')
if __name__ == '__main__':
root = tk.Tk()
app = Window(root)
root.mainloop()
答案 0 :(得分:1)
代码正在运行。但是,绑定到画布对象时,必须单击绘制对象的一部分。由于你没有填充椭圆形,这意味着你必须点击它的轮廓。
如果您使用与背景(或任何其他颜色)相同的颜色填充它,您可以单击椭圆形中的任何位置。
self.oval = self.c.create_oval([30,50], [130,80], fill="white")