在 PySimpleGUI 中,如何在文本字段中拥有超链接?

1 python pysimplegui

我正在基于这个Youtube 教程创建一个搜索引擎,它在 sg.Output 元素中给出搜索结果的输出。我希望每个结果都可单击并在 Windows 文件资源管理器中打开并选择文件。

我的问题出在 PySimpleGUI 输出框(sg.Output)中,我似乎只能有文本。

我怎样才能有带有链接的文本来运行这样的子进程?我的猜测是类似于这里讨论的内容:

sg.Text('Here', is_link=True, key='link') # then link the key to an event
Run Code Online (Sandbox Code Playgroud)

但是,如前所述,如果我向 sg.Output 添加除文本之外的任何内容,它都不起作用,即以下内容不起作用:

sg.window.FindElement('-OUTPUT-').Update(sg.Text('Here', is_link=True, key='link')) 
Run Code Online (Sandbox Code Playgroud)

Jas*_*ang 5

sg.Output或启用超链接功能会比较复杂sg.Multiline

下面是通过使用选项和为 提供超链接功能的简单代码sg.Text,也适用于其他一些元素。enable_events=Truetooltip

在此输入图像描述

import webbrowser
import PySimpleGUI as sg

urls = {
    'Google':'https://www.google.com',
    'Amazon':'https://www.amazon.com/',
    'NASA'  :'https://www.nasa.gov/',
    'Python':'https://www.python.org/',
}

items = sorted(urls.keys())

sg.theme("DarkBlue")
font = ('Courier New', 16, 'underline')

layout = [[sg.Text(txt, tooltip=urls[txt], enable_events=True, font=font,
    key=f'URL {urls[txt]}')] for txt in items]
window = sg.Window('Hyperlink', layout, size=(250, 150), finalize=True)

while True:
    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break
    elif event.startswith("URL "):
        url = event.split(' ')[1]
        webbrowser.open(url)
    print(event, values)

window.close()
Run Code Online (Sandbox Code Playgroud)