gpt4 book ai didi

python - 如何停止在 Tkinter 中引发事件?

转载 作者:太空狗 更新时间:2023-10-30 01:29:43 27 4
gpt4 key购买 nike

我有这样的代码

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()

当我点击 Canvas 时,我在控制台中看到“in canvas”消息。当我在椭圆形上单击]时,我有两条消息“在椭圆形中”和“在 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()

Canvas 下没有其他更简单的方法来处理这个问题。

关于python - 如何停止在 Tkinter 中引发事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14471326/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com