您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python Tkinter:停止文本小部件标签中的事件传播

Python Tkinter:停止文本小部件标签中的事件传播

好吧,在 稍微 修改一下之后,我能够找到一个可行的解决方案。我认为问题在于标签可能没有从BaseWidget继承。

代码中的解决方法(很抱歉在global这里使用,但是我只是修改了我的问题的简单示例…):

#!/usr/bin/env python

try:
    from Tkinter import *
    from tkMessage@R_254_2419@ import showinfo
except ImportError:
    from tkinter import *
    from tkinter.message@R_254_2419@ import showinfo

tag_to_handle = ''

def on_click(event, widget_origin='?'):
    global tag_to_handle
    if tag_to_handle:
        showinfo('Click', '"{}" clicked'.format(tag_to_handle))
        tag_to_handle = ''
    else:
        showinfo('Click', '"{}  " clicked'.format(widget_origin))

def on_tag_click(event, tag):
    global tag_to_handle
    tag_to_handle = tag

root = Tk()
text = Text(root)
text.pack()
text.insert(CURRENT, 'Some untagged text...\n')
text.bind('<Button-1>', lambda e, w='textwidget': on_click(e, w))
for i in range(5):
    tag_name = 'tag_{}'.format(i)
    text.tag_config(tag_name)
    text.tag_bind(tag_name, '<Button-1>',
        lambda e, w=tag_name: on_tag_click(e, w))
    text.insert(CURRENT, tag_name + ' ', tag_name)
root.mainloop()

我希望这对遇到相同问题的人有所帮助。

我仍然愿意接受更好的解决方案!

python 2022/1/1 18:52:04 有531人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶