2012-07-10 83 views
1

我最近开始使用Kivy并遇到问题。我需要制作一个带有URL图像的按钮/缩略图作为背景。我在Kivy用户论坛here上得到了一些帮助,但我仍然有点卡住。这里是我的只是那部分代码:Kivy - 制作带有URL图像作为背景的按钮/缩略图

for image_set, image_type in zip(categorized_images, image_types): 
    layout = GridLayout(cols=2, size_hint=(None, None)) 
    layout.bind(minimum_height=layout.setter('height')) 
    scroll_view = ScrollView(size_hint=(None, None), size=(320, 200)) 
    section = AccordionItem(title='%s' % image_type) 
    layout.add_widget(back_button1) 

    for image_path in image_set: 
     layout.add_widget(AsyncImage(source="http://www.example/"'%s' % image_path,\ 
            size_hint=(None, None), size=(160, 160))) 

    scroll_view.add_widget(layout) 
    section.add_widget(scroll_view) 
    accordion.add_widget(section) 

我现在只是创建了一堆的图像,但我需要缩略图得以创建,这将导致全尺寸的图像。除此之外,我还有在Kivy链接中提到的builder.load_string部分和ButtonBehavior类部分。我只是不知道如何在“for循环”中实现。是否有可能将UrlBut实例视为一个小部件?

回答

0

缩览图全图

制作UrlBut创建和存储缩略图当它被实例化。为此,您可以用PIL,请按照本教程http://andrius.miasnikovas.lt/2010/04/creating-thumbnails-from-photos-with-python-pil/

然后,有on_press方法(或同等学历)创建一个包含全尺寸图像的弹出窗口或叠加。

治疗的UrlBut作为一个Widget

阅读:http://kivy.org/docs/api-kivy.lang.html#syntax-of-template

的Kivy文件说,在KV文件中定义的模板可以像这样Python代码(我适应给出的例子中被实例化在那个链接):

你千伏语言模板:

[[email protected]+AsyncImage]: 
    source: ctx.source 
    button_grab: True 
    on_press: eval(ctx.on_press) 

然后在Python中,你可以实例日Ë模板用:

for image_path in image_set: 
     layout.add_widget(Builder.template('UrlBut',source="http://www.example/"'%s' % image_path) 

from kivy.lang import Builder 

urlbut1 = Builder.template('UrlBut',source='http://lorempixel.com/400/200') 

# create a second template with a different image 
urlbut2 = Builder.template('UrlBut', source='http://lorempixel.com/400/200') 
# and use urlbut1 and urlbut2 as other widgets. 

然后,你可以用一个for循环自动执行此