У меня есть приложение для работы с погодой, которое я написал в Python/Kivy, оно успешно загружает и загружает изображение при запуске приложения, но карта погоды меняется ежедневно и не освежает. В документации Kivy обсуждаются nocache: True
, image.reload()
& Я пробовал self.the_24h_chart.source.reload()
и обе ошибки.Обновление изображения Kivy с помощью Python
Как перезагрузить файл изображения? Псевдо код:
- загрузить новое изображение и переписать оригинал с таким же именем
- перезагружать изображение
Мой текущий код Kivy:
#! /usr/bin/env python
# -*- decoding: utf-8 -*-
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty, StringProperty, ListProperty
from kivy.clock import Clock
from kivy.loader import Loader
import time
from datetime import datetime, timedelta
import socket
import urllib
#--------------- kivy code ------------------
Builder.load_string('''
<Chart1>:
name: 'chart1'
the_24h_chart: _chart_img
Image:
source: 'images/chart.jpg'
nocache: True
id: _chart_img
size_hint_y: None
height: dp(420)
''')
#-------------------------------------------
class Chart1(Screen):
def update_chart1(self, sec):
try:
urllib.urlretrieve('http://wxcharts.eu/charts/gfs/uk/06/overview_030.jpg', 'images/chart.jpg')
self.the_24h_chart.source = 'images/chart.jpg'
self.Image.reload()
except:
print 'Error Updating Image'
pass
class ScreenManagerApp(App):
def build(self):
sm = ScreenManager()
self.chart1_screen = Chart1(name = 'chart1')
sm.add_widget(self.chart1_screen)
return sm
def on_start(self):
event1 = Clock.create_trigger(self.chart1_screen.update_chart1)
Clock.schedule_interval(self.chart1_screen.update_chart1, 3600) # 1 Hour
event1()
#===========================================================
# run the App !
ScreenManagerApp().run()
Как описано, это звучит как ошибка в 'Image.reload'. Можете ли вы предоставить минимальный исполняемый пример для тестирования? – inclement
Я отредактировал исходное сообщение, теперь рабочий пример с ошибкой перезагрузки – northwarks