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是一个很棒的工具包,为你提供了构建几乎任何想要的东西的基础组件。你只需要把小部件看成一堆木材、砖块和灰泥,而不是一套预制的墙壁和门。
"blue"
应该是可以接受的(因为你在 Windows 上,Tkinter 应该使用其内置的颜色名称表——这可能是 X11 上的系统配置错误,但不是在 Windows 上);因此,这是一个令人困惑的问题(也许是 Tkinter 的配置问题...?)。例如,如果您使用 foreground="#00F"
会发生什么?这并不能解释问题,但至少可以让您继续工作...
#00F
,但它仍然抱怨一个不再存在的“blue”吗?或者这不是你所说的“完全相同的错误”吗? - Alex Martelli