簡體   English   中英

使用Python刷新Kivy圖像

[英]Refreshing Kivy Image with Python

我有一個用Python / Kivy編寫的天氣應用程序,它在應用程序啟動時成功下載並加載了圖像,但是天氣圖每天都在變化並且沒有刷新。 Kivy文檔討論了nocache: Trueimage.reload() ,我已經嘗試過self.the_24h_chart.source.reload()和這兩個錯誤。

如何重新加載圖像文件? 偽代碼:

  1. 下載新圖像並覆蓋相同名稱的原始圖像
  2. 重新加載圖像

我當前的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()引發錯誤。 您會在回溯中看到這一點,但是您添加了一個全面的try / except,它完全隱藏了正在發生的事情。 出於這個原因,使用包羅萬象的try / except幾乎從來都不是一個好主意-如果您期望出現問題,請僅捕獲將要引發的特定異常,並嘗試確保不會引發相同的異常以任何其他方式。

訪問Image實例的最簡單方法是使用self.ids._chart_img.reload()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM