在 Tkinter 中的文本小部件中添加文本链接

阿布舍克·夏尔马

我正在使用 Tkinter 和 bs4 在 python 中创建一个歌曲通知程序。我已经从一个站点中提取了歌曲及其相应的 url。我使用文本小部件来存储歌曲并将它们的 url 作为字典中的键值。

现在我想添加歌曲名称的链接(存储在文本小部件中),以便当我单击特定歌曲时,它的 url 会在 chrome 中打开。

这是代码片段:

from tkinter import *
import webbrowser
from bollywood_top_50 import bollywood_songs_list , bollywood_songs_dict
from international_top_50 import international_songs_list


b_songs_list  = bollywood_songs_list()
b_songs_dict =  bollywood_songs_dict()
i_songs_list = international_songs_list()

root = Tk()
S = Scrollbar(root)
T = Text(root, height=20, width=30,cursor="hand2")
S.pack(side=RIGHT, fill=Y)
T.pack(side=LEFT, fill=Y)
S.config(command=T.yview)
T.config(yscrollcommand=S.set)    


def callback_a():
    T.delete(1.0,END)
    for songs in b_songs_list:
       T.insert(END, songs + '\n')   

def callback_b():
    T.delete(1.0,END)
    for songs in i_songs_list:
        T.insert(END, songs + '\n')        

bollywood_button = Button(root,text="Bollywood-Top-50", command=callback_a)
bollywood_button.pack()

international_button = Button(root,text="International-Top-50", command=callback_b)
international_button.pack()

这是示例输出:

在此处输入图片说明

无花果梁

我没有问题。创建一个名为“tkHyperlinkManager.py”的文件,其中包含:

from tkinter import *

class HyperlinkManager:
    def __init__(self, text):
        self.text = text
        self.text.tag_config("hyper", foreground="blue", underline=1)
        self.text.tag_bind("hyper", "<Enter>", self._enter)
        self.text.tag_bind("hyper", "<Leave>", self._leave)
        self.text.tag_bind("hyper", "<Button-1>", self._click)
        self.reset()

    def reset(self):
        self.links = {}

    def add(self, action):
        # add an action to the manager.  returns tags to use in
        # associated text widget
        tag = "hyper-%d" % len(self.links)
        self.links[tag] = action
        return "hyper", tag

    def _enter(self, event):
        self.text.config(cursor="hand2")

    def _leave(self, event):
        self.text.config(cursor="")

    def _click(self, event):
        for tag in self.text.tag_names(CURRENT):
            if tag[:6] == "hyper-":
                self.links[tag]()
                return

将其导入您的程序并插入链接。我提供了看似合理的样本数据。宝莱坞歌曲列表带有超链接,而国际歌曲列表则没有。我不只是一个机制的演示。您必须自己编写所有回调和 Web 界面。

from tkinter import *
from tkHyperlinkManager import *

b_songs_list  = ['Bollywood song 1','Bollywood song 2','Bollywood song 3']
i_songs_list = ['International song 1','International song 2','International song 3']

root = Tk()
S = Scrollbar(root)
T = Text(root, height=20, width=30,cursor="hand2")
hyperlink = HyperlinkManager(T)
S.pack(side=RIGHT, fill=Y)
T.pack(side=LEFT, fill=Y)
S.config(command=T.yview)
T.config(yscrollcommand=S.set)    

def click1():
    print('click1')

def callback_a():   # Bollywood songs WITH hyperlinks
    T.delete(1.0,END)
    for songs in b_songs_list:
       T.insert(END, songs, hyperlink.add(click1))
       T.insert(END, '\n')

def callback_b():
    T.delete(1.0,END)
    for songs in i_songs_list:
        T.insert(END, songs + '\n')        

bollywood_button = Button(root,text="Bollywood-Top-50", command=callback_a)
bollywood_button.pack()

international_button = Button(root,text="International-Top-50", command=callback_b)
international_button.pack()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用feedparser在tkinter文本小部件中添加文本链接?

来自分类Dev

Tkinter文本小部件中的撤消功能

来自分类Dev

文本小部件Tkinter中的行号间距

来自分类Dev

文本小部件tkinter

来自分类Dev

如何将多个按钮链接到 tkinter 中的一个文本小部件?

来自分类Dev

在python 2.7中将图像添加到Tkinter的文本小部件中

来自分类Dev

Python TKinter在文本小部件中获得clicked标签

来自分类Dev

如何在Tkinter文本小部件中创建“加载轮”?

来自分类Dev

展开文本小部件以在Tkinter中填充整个父框架

来自分类Dev

移动到文本小部件tkinter中的特定位置

来自分类Dev

在tkinter文本小部件中删除整个单词

来自分类Dev

如何在Tkinter文本小部件中创建“加载轮”?

来自分类Dev

Tkinter文本中的行号和只读窗口小部件代理

来自分类Dev

在Tkinter文本小部件中更改Backspace效果

来自分类Dev

在 Python Tkinter 小部件中更改(更新)文本

来自分类Dev

Tkinter只读文本小部件

来自分类Dev

标记文本小部件-Tkinter

来自分类Dev

Tkinter只读文本小部件

来自分类Dev

标记文本小部件-Tkinter

来自分类Dev

如何从Jupyter笔记本中的Tkinter文本小部件中获取文本?

来自分类Dev

在Tkinter文本框小部件中更改每隔一行文本的背景颜色

来自分类Dev

如何在Tkinter文本小部件中获取文本的当前长度

来自分类Dev

Tkinter:如何将在“文本小部件”中输入的文本保存到新窗口中?

来自分类Dev

如何在Tkinter文本小部件中显示文本和变量

来自分类Dev

获取Tkinter文本小部件以显示最新添加的内容

来自分类Dev

如何在python 3.4.x中的tkinter文本小部件中显示渲染的html内容

来自分类Dev

如何从tkinter文本小部件中获取输入,当它在函数中时

来自分类Dev

如何使用 python tkinter 中的复选按钮在 Entry 小部件中显示或隐藏文本?

来自分类Dev

获取文本tkinter小部件的行数

Related 相关文章

  1. 1

    如何使用feedparser在tkinter文本小部件中添加文本链接?

  2. 2

    Tkinter文本小部件中的撤消功能

  3. 3

    文本小部件Tkinter中的行号间距

  4. 4

    文本小部件tkinter

  5. 5

    如何将多个按钮链接到 tkinter 中的一个文本小部件?

  6. 6

    在python 2.7中将图像添加到Tkinter的文本小部件中

  7. 7

    Python TKinter在文本小部件中获得clicked标签

  8. 8

    如何在Tkinter文本小部件中创建“加载轮”?

  9. 9

    展开文本小部件以在Tkinter中填充整个父框架

  10. 10

    移动到文本小部件tkinter中的特定位置

  11. 11

    在tkinter文本小部件中删除整个单词

  12. 12

    如何在Tkinter文本小部件中创建“加载轮”?

  13. 13

    Tkinter文本中的行号和只读窗口小部件代理

  14. 14

    在Tkinter文本小部件中更改Backspace效果

  15. 15

    在 Python Tkinter 小部件中更改(更新)文本

  16. 16

    Tkinter只读文本小部件

  17. 17

    标记文本小部件-Tkinter

  18. 18

    Tkinter只读文本小部件

  19. 19

    标记文本小部件-Tkinter

  20. 20

    如何从Jupyter笔记本中的Tkinter文本小部件中获取文本?

  21. 21

    在Tkinter文本框小部件中更改每隔一行文本的背景颜色

  22. 22

    如何在Tkinter文本小部件中获取文本的当前长度

  23. 23

    Tkinter:如何将在“文本小部件”中输入的文本保存到新窗口中?

  24. 24

    如何在Tkinter文本小部件中显示文本和变量

  25. 25

    获取Tkinter文本小部件以显示最新添加的内容

  26. 26

    如何在python 3.4.x中的tkinter文本小部件中显示渲染的html内容

  27. 27

    如何从tkinter文本小部件中获取输入,当它在函数中时

  28. 28

    如何使用 python tkinter 中的复选按钮在 Entry 小部件中显示或隐藏文本?

  29. 29

    获取文本tkinter小部件的行数

热门标签

归档