Гиперссылка в текстовом виджете Tkinter? - PullRequest
9 голосов
/ 04 августа 2010

Я занимаюсь разработкой части моего текущего программного проекта и хочу использовать гиперссылки вместо Buttons. Я действительно не хотел использовать Text виджет, но это все, что я мог найти, когда гуглил предмет. Во всяком случае, я нашел пример этого, но продолжаю получать эту ошибку:

TclError: bitmap "blue" not defined

Когда я добавляю эту строку кода (используя IDLE)

hyperlink = tkHyperlinkManager.HyperlinkManager(text)

Код для модуля находится здесь , а код для скрипта расположен здесь

У кого-нибудь есть идеи?

Часть, которая создает проблемы, говорит: foreground="blue", который в Tkinter известен как цвет, не так ли?

Ответы [ 2 ]

13 голосов
/ 04 августа 2010

Если вы не хотите использовать текстовый виджет, вам не нужно.Альтернативой является использование метки и привязка к ней щелчков мыши.Несмотря на то, что это метка, она все равно реагирует на события.

Например:

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 голос
/ 04 августа 2010

"blue" действительно должно быть приемлемо (поскольку вы работаете в Windows, Tkinter должен использовать свою встроенную таблицу имен цветов - это может быть неверная конфигурация системы в X11, но не в Windows); следовательно, это загадочная проблема (может быть неправильная настройка Tkinter ...?). Что произойдет, если вы используете, например, foreground="#00F"? Это не объясняет проблему, но может позволить вам обойти ее, по крайней мере ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...