kha*_*iuk 5 python events tkinter
我有一些像这样的代码
from Tkinter import *
master = Tk()
def oval_mouse_click(event):
print "in oval"
def canvas_mouse_click(event):
print "in canvas"
w = Canvas(master, width = 800, height = 600)
uid = w.create_oval(390, 290, 410, 310, fill='blue')
w.tag_bind(uid, "<Button-1>", lambda x: oval_mouse_click(x))
w.bind("<Button-1>" , canvas_mouse_click)
w.pack()
mainloop()
Run Code Online (Sandbox Code Playgroud)
当我点击Canvas时,我在控制台中有"画布"消息.当我点击椭圆形时,我有两条消息"在椭圆形"和"在画布中",但我想只有第一条消息.有没有办法阻止事件的发生?
我可以用一些全球旗帜来完成这项任务,但我认为Tkl应该有更自然的方式.
这是处理您的问题的最简单的示例:
import Tkinter
def oval_mouse_click(event):
print "in oval"
event.widget.tag_click = True
def canvas_mouse_click(event):
if event.widget.tag_click:
event.widget.tag_click = False
return
print "in canvas"
root = Tkinter.Tk()
canvas = Tkinter.Canvas(width=400, height=300)
oid = canvas.create_oval(400/2-10, 300/2-10, 400/2+10, 300/2+10, fill='blue')
canvas.tag_click = False
canvas.tag_bind(oid, "<Button-1>", oval_mouse_click)
canvas.bind("<Button-1>" , canvas_mouse_click)
canvas.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
没有其他更简单的方法可以处理这个问题Canvas。
| 归档时间: |
|
| 查看次数: |
2192 次 |
| 最近记录: |