Не работает перезагрузка в webview.start(reload, window)

Рейтинг: 1Ответов: 1Опубликовано: 21.06.2023

Я тестирую свой код и в цикле обновляю координаты, чтобы работало как обновление геопозицию в реальном времени. Если обновлять страницу в браузере во время работы этого кода, то маркер изменяет свою позицию каждые 5 секунд как и должно. Могу предположить что window всё же не обновляется. Подскажите что ни так в этом коде пожалуйста

Код:

from tkinter import *
import webview
import folium

from threading import *
import time

import os

# define an instance of tkinter

arr_coord = [[21.528286, 46.016934], [21.527596, 46.021067]]
coords = [0,0]
def create_and_update_map(coords):

    # без location zoom_start не работает
    map = folium.Map(location=coords, zoom_start=20)

    tooltip ="MyMap"

    folium.Marker(coords, popup="user 1", tooltip=tooltip, icon=folium.Icon(color='green')).add_to(map)
    print("create new maps!")
    map.save('C:\\Users\\user\\Desktop\\Сервер\\mymap.html')

  

def update():
    global arr_coord

    while(True):
        for coord in arr_coord:
            print(coord)
            create_and_update_map(coord)
            time.sleep(5)



def reload(window):
    global arr_coord



    while True:
        for coord in arr_coord:
            print(coord)

            create_and_update_map(coord)
            
            time.sleep(5)

            print("reload url!")
            window.load_url('mymap.html')


if __name__ == '__main__':
    

    window = webview.create_window('MyMap', 'mymap.html')

    webview.start(reload, window)

Ответы

▲ 0

Сам же отвечу на вопрос. Я так и не нашел как запустить этот код. Есть рабочая альтернатива - PyQt5. Также я заменил цикл for. В коде ниже видно что страница обновляется в отличии от pywebview.

Также pywebview является сырым фреймворком.

P.s админы и те кто успел это прочесть. Отвечать на свои же вопросы, это приятно, но я бы хотел чтобы на мои вопросы хотя бы пытались ответить, что я делаю не так? И это не первый мой вопрос с одним лишь моим ответом

Код:

import folium

import time
import os

import sys
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtWidgets import QApplication



# define an instance of tkinter

arr_coord = [[51.528286, 46.016934], [51.527596, 46.021067]]
coords = [0,0]
idx = 0


def update_coord():
        global idx

        if(idx == 0):
            coord = arr_coord[0]
            idx = 1
        else:
            idx = 0
            coord = arr_coord[1]
        return coord





def job():
    global arr_coord

    coord = update_coord()
    create_and_update_map(coord)

    print('test')
    print('Reload :%s',time.time())
    browser.reload() 

if __name__ == '__main__':
    url ='file:///C:/Users/user/Desktop/Сервер/mymap.html'

    app =  QApplication(sys.argv)
    browser = QWebEngineView()
    browser.load(QUrl(url))
    browser.show()
    timer = QTimer(interval=3000)
    timer.timeout.connect(job)
    timer.start()
    sys.exit(app.exec_())