Python。如何将文本作为超链接打印到控制台?

问题描述 投票:0回答:3

我正在开发控制台应用程序。我的应用程序使用 urwid lib。在某些情况下,我需要将很长的超链接显示为表列内的短文本。我想在单击列内的文本时在浏览器中打开链接。

所以,我的问题是:

可以将文本作为超链接打印到控制台吗?

您能否提供一个如何使用 python 将文本打印为超链接的小示例?

python hyperlink console-application osc-8
3个回答
21
投票

有点晚了,但现在完全有办法做到这一点,无需诅咒或任何东西,只需来自终端模拟器的纯文本和协作。

def link(uri, label=None):
    if label is None: 
        label = uri
    parameters = ''

    # OSC 8 ; params ; URI ST <name> OSC 8 ;; ST 
    escape_mask = '\033]8;{};{}\033\\{}\033]8;;\033\\'

    return escape_mask.format(parameters, uri, label)

使用

link('https://example.com/')
调用该函数以获得简单的可点击链接,或使用
link('https://example.com/', 'example')
获得自定义标签。

请注意,您的终端中的链接带有微弱的下划线,并非所有链接都支持该功能。


4
投票

是的,使用一些工具,如 gNewt 或 Curses,您可以创建一个按钮并“单击”执行一个操作(例如打开浏览器到给定的 URL)。

gNewt:http://gnewt.sourceforge.net/

nCurses:https://docs.python.org/3.7/library/curses.html

否则,终端应用程序将管理您提供的文本,如果它没有实现 uri 的识别,您的程序将无法按您的意愿运行。


1
投票

不,有些控制台可以识别网址并将其转换为可点击的超链接。您所能做的就是在您的 url 中添加 http:// 以便轻松识别控制台应用程序。

另请参阅 bash 如何识别链接?

© www.soinside.com 2019 - 2024. All rights reserved.