This commit is contained in:
yumoqing 2022-06-23 10:28:21 +08:00
parent a0c7c8b0be
commit 27b10b025b
3 changed files with 42 additions and 1 deletions

View File

@ -1,6 +1,7 @@
import os import os
# from kivy.logger import logging # from kivy.logger import logging
__version_info__ = "0.5.0" __version_info__ = "0.5.0"
from .defaultimage import DefaultImage
from .version import __version__ from .version import __version__
path = os.path.dirname(__file__) path = os.path.dirname(__file__)

View File

@ -0,0 +1,38 @@
from kivy.uix.image import AsyncImage
from kivy.factory import Factory
from kivy.properties import StringProperty
from urllib.request import urlopen
from kivyblocks.utils import blockImage
class DefaultImage(AsyncImage):
default_source = StringProperty(None)
def __init__(self, default_source=None, **kw):
self.default_source = default_source
super().__init__(**kw)
if self.default_source is None:
self.default_source = blockImage('broken.png')
def can_access(self, src):
if os.path.isfile(src):
return True
if self.is_uri(src):
with urlopen(src, timeout=0.5):
return True
return None
def on_source(self, o, s):
if not self.can_access(s):
self.source = self.default_source
Factory.register('DefaultImage', DefaultImage)
if __name__ == '__main__':
import os
import sys
from kivy.app import App
class TestApp(App):
def build(self):
return DefaultImage(source=sys.argv[1], default_source='/Volumes/home/ymq/pydev/github/kivyblocks/kivyblocks/imgs/doing.gif')
app = TestApp()
app.run()

View File

@ -1 +1,3 @@
__version__ = '0.2.8' # add a new class DefaultImage, if the source load failed, source set to default_source
__version__ = '0.2.9'
# __version__ = '0.2.8'