Кликабельные текстовые ссылки с использованием PySimpleGUI

Можно ли добавить кликабельные текстовые ссылки в PySimpleGUI? Я уже пробовал использовать кнопки, которые затем используют os.system("start \"\" https://google.com/") или webbrowser.open('www.google.com/', new=0), но после нажатия одной из кнопок в окне все остальные не работают.


person Chops Kingsland    schedule 13.06.2020    source источник
comment
Я рекомендую всегда явно устанавливать ключ для любого элемента, с которым вы работаете или получаете событие. Сделайте это ОБЫЧНЫМ текстом. Соглашение PSG - KEY-. Когда событие получено, используйте сложную строку, чтобы открыть браузер. Вы можете сохранить его как метаданные, если хотите, чтобы он был с элементом. Я предлагаю вывести странно отформатированную строку из обработки событий.   -  person Mike from PSG    schedule 13.02.2021


Ответы (1)


В документации ясно, как это сделать. Документация элемента Text показывает, что параметр enable_events предоставит вам событие при щелчке по тексту.

https://pysimplegui.readthedocs.io/en/latest/call%20reference/#text-element

введите здесь описание изображения

Когда ваш текст щелкнут, возвращаемая строка события будет полной строкой, содержащейся в элементе Text (включая пробелы).

(Спасибо Крису за расширение ответа...)

Вообще говоря, я рекомендую быть явным с ключами для элементов. Он позволяет изменять текст, но событие и проверка события остаются прежними.

Документация нуждается в некотором обновлении, чтобы отразить то, что указал Крис. Спасибо, что нашли время, чтобы просмотреть этот Крис, сделать предложение.

person Mike from PSG    schedule 14.06.2020
comment
Рецензент указал на ошибку в коде PySimpleGUI. Он должен возвращать ключ с автоматической нумерацией, но вместо этого возвращает содержимое ТЕКСТА. Добавлю как баг. (Спасибо, рецензент... Мне жаль, что я так ошибся в комментарии к обзору! DOH!) - person Mike from PSG; 13.02.2021
comment
Проблема открыта на GitHub проекта... пожалуйста, сообщайте о проблемах, которые вы видите там, чтобы они были замечены и решены. Не уверен, как именно это разрешится, но вы можете отслеживать прогресс на GitHub. Еще раз спасибо рецензенту за указание на то, что он плохо документирован и, возможно, ведет себя не так, как предполагалось. - person Mike from PSG; 13.02.2021