我正在设计当前软件项目的一部分,并希望使用超链接而不是Buttons
。我真的不想使用Text
小部件,但这是我搜索主题时能找到的全部内容。无论如何,我找到了一个这样的例子,但不断收到这个错误:
TclError: bitmap "blue" not defined
当我添加这行代码时(使用IDLE
)
hyperlink = tkHyperlinkManager.HyperlinkManager(text)
有人有什么想法吗?
提出问题的部分是foreground="blue"
,在Tkinter中被称为颜色,不是吗?
答案 0 :(得分: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是一个很棒的工具包,可以为您提供构建基础,以满足您的需求。您只需要将小部件视为一组预制的墙壁和门,而不仅仅是一堆腰部,砖块和砂浆。
答案 1 :(得分:1)
"blue"
(因为你在Windows上,Tkinter应该使用它的内置颜色名称表 - 它可能是X11上的系统配置错误,但不是Windows上的系统配置错误);因此,这是一个令人费解的问题(可能是Tkinter错误配置......?)。例如,如果您使用foreground="#00F"
会发生什么?这并没有解释问题,但可能让你解决它,至少......