python - 在 PySimpleGUI 中,如何在文本字段中添加超链接?
问题描述
我正在创建一个基于此Youtube 教程的搜索引擎,它在 sg.Output 元素中提供搜索结果的输出。我希望每个结果都可以单击并在 Windows 文件资源管理器中打开并选择文件。
我的问题在 PySimpleGUI 输出框 (sg.Output) 中,我似乎只能有文本。
我怎样才能获得带有链接的文本来运行这样的子进程?我的猜测是类似于这里讨论的内容:
sg.Text('Here', is_link=True, key='link') # then link the key to an event
但是,如前所述,如果我向 sg.Output 添加除文本以外的任何内容,则它不起作用,即以下内容不起作用:
sg.window.FindElement('-OUTPUT-').Update(sg.Text('Here', is_link=True, key='link'))
解决方案
sg.Output
为or启用超链接功能将非常复杂sg.Multiline
。
这是为 提供超链接功能的简单代码sg.Text
,也适用于其他一些元素,通过使用选项enable_events=True
和tooltip
.
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()
推荐阅读
- django - 如何在 Django URL 中正确重定向,我在重定向时遇到问题
- python - N阶差和N阶差
- terraform - 使用 Terraform 将 Helm 部署到 GKE 时经常出错
- javascript - 搜索html表格
- c++ - C++程序产生异常?
- swift - 使用 Xcode 11.4.1,为什么这些错误显示在动画部分?
- javascript - Node.js + Express + i18next 如何同时管理两种语言
- c# - 是否可以在 C# 中使用泛型类型参数使接口方法返回另一个方法的类型?
- c - 这是递归的正确应用吗?(显示堆栈的项目)
- html - 在 React Native 中渲染本地 html 文件