我正在基于这个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)
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)
| 归档时间: |
|
| 查看次数: |
4068 次 |
| 最近记录: |