Tkinter Text 小部件中的超链接?
2 个回答
1
其实,"blue"
是可以用的(因为你在用Windows,Tkinter应该会使用它自带的颜色名称表——在X11上可能是系统配置有问题,但在Windows上应该没事);所以这个问题有点让人困惑(可能是Tkinter的配置问题...?)。那么,如果你试试用 foreground="#00F"
呢?虽然这不能解决问题,但至少可能让你找到一个替代的方法...
13
如果你不想用文本小部件,其实可以不使用。你可以选择用一个标签,并把鼠标点击事件绑定到这个标签上。虽然它是个标签,但它依然能响应事件。
举个例子:
import tkinter as tk
class App:
def __init__(self, root):
self.root = root
for text in ("link1", "link2", "link3"):
link = tk.Label(text=text, foreground="#0000ff")
link.bind("<1>", lambda event, text=text: self.click_link(event, text))
link.pack()
def click_link(self, event, text):
print("You clicked '%s'" % text)
root = tk.Tk()
app = App(root)
root.mainloop()
如果你愿意,还可以更花哨一点,给标签添加额外的绑定,比如 <Enter>
和 <Leave>
事件,这样当用户把鼠标悬停在上面时,可以改变标签的外观。当然,你也可以选择改变字体,让文字变成下划线。
Tk 是一个很棒的工具包,它提供了你几乎所有想要的构建模块。你只需要把小部件看作是一堆木材、砖块和水泥,而不是一套预制的墙和门。