Гиперссылка в текстовом виджете Tkinter?

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

TclError: bitmap "blue" not defined

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

hyperlink = tkHyperlinkManager.HyperlinkManager(text)

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

У кого-либо есть какие-либо идеи?

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

9
задан nbro 17 March 2015 в 10:24
поделиться

2 ответа

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

Например:

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()

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

Tk - замечательный набор инструментов, который дает вам строительные блоки, чтобы делать все, что вы хотите. Вам просто нужно смотреть на виджеты не как на набор заранее подготовленных стен и дверей, а как на груду поясницы, кирпичей и раствора.

13
ответ дан 4 December 2019 в 14:26
поделиться

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

1
ответ дан 4 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: