Я не страдал, взял
webview и все просто и кросс-платформенно!
# https://pywebview.flowrl.com
import webview
import threading
import time
import sys
import random
html = """
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body>
<a href="" id="b1">Button</a>
<script>
document.querySelector('#b1').addEventListener('click', (ev) => {
ev.preventDefault();
pywebview.api.btnAClick().then((r) => {
document.querySelector('#b1').style.color = '#FFF000';
});
});
</script>
</body></html>
"""
class MyApi:
def __init__(self):
self.cancel_heavy_stuff_flag = False
def btnAClick(self):
response = {
'error': 0,
'message': 'https://google.com/'
}
return response
if __name__ == '__main__':
api = MyApi()
window = webview.create_window('Example', html=html, js_api=api)
webview.start()
Если не секрет, то почему нужно именно такое решение?