gpt4 book ai didi

Python:如何将 Tkinter 文本标签与信息相关联并在事件中访问它们?

转载 作者:行者123 更新时间:2023-11-28 22:49:12 25 4
gpt4 key购买 nike

我在 tkinter 中使用了一个文本小部件,并像这样将一些标签与其相关联:

textw.tag_config( "err", background="pink" );

textw.tag_bind("err", '<Motion>', self.HoverError);

基本上所有包含错误的文本都被标记为“err”。现在我想访问带有悬停标签的相关错误消息,但我不知道如何知道哪个标签被悬停了。

def HoverError( self, event ):
# Get error information

如果我能提取悬停标签的范围,问题就解决了。关于如何实现此目标的任何想法?

最佳答案

Motion event 具有与之关联的属性,其中之一是鼠标的 x、y 坐标。 Text 小部件可以将这些坐标解释为索引,因此您可以使用 tag_prevrange 方法获取距离鼠标所在位置最近的标签实例。

这是一个例子:

def hover_over(event):

# get the index of the mouse cursor from the event.x and y attributes
xy = '@{0},{1}'.format(event.x, event.y)

# find the range of the tag nearest the index
tag_range = text.tag_prevrange('err', xy)

# use the get method to display the results of the index range
print(text.get(*tag_range))


root = Tk()

text = Text(root)
text.pack()

text.insert(1.0, 'This is the first error message ', 'err')
text.insert(END, 'This is a non-error message ')
text.insert(END, 'This is the second error message ', 'err')
text.insert(END, 'This is a non-error message ')
text.insert(END, 'This is the third error message', 'err')

text.tag_config('err', background='pink')
text.tag_bind('err', '<Enter>', hover_over)

root.mainloop()

如果两个标签相互碰撞,tag_prevrange 方法会给您带来不希望的结果(它会寻找标签的末尾,因为不会有自然中断),但取决于关于如何插入 Text 小部件,这可能不是问题。

关于Python:如何将 Tkinter 文本标签与信息相关联并在事件中访问它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24135629/

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