我有一个用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()
您的Chart1没有名为Image的属性,因此
self.Image.reload()
会引发一个错误。您可以在回溯中看到这一点,但您添加了catchall try/但它完全隐藏了发生的事情。除非你用一个特别的方法来提出一个好的例外,否则你永远也不会用一个特别的方法来提出这个问题。在访问映像实例的最简单方法是使用
self.ids._chart_img.reload()
。在相关问题 更多 >
编程相关推荐