【发布时间】:2017-02-05 15:00:09
【问题描述】:
我有一个我用 Python/Kivy 编写的天气应用程序,它在应用程序启动时成功下载并加载了图像,但天气图每天都在变化,而且它不刷新。 Kivy 文档讨论了nocache: True、image.reload() 和我已经尝试过self.the_24h_chart.source.reload() 和两个错误。
如何重新加载图像文件?伪代码:
- 下载新图像并用相同名称覆盖原图像
- 重新加载图片
我当前的 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中的一个错误。你能提供一个最小的可运行示例来测试吗? -
我已经编辑了原始帖子,现在可以使用重新加载图像错误的示例