好吧,在
稍微
修改一下之后,我能够找到一个可行的解决方案。我认为问题在于标签可能没有从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()
我希望这对遇到相同问题的人有所帮助。
我仍然愿意接受更好的解决方案!