Kivy - 使用URL图像作为背景制作按钮/缩略图

时间:2012-07-10 16:06:47

标签: android python ios kivy

我最近开始与Kivy合作并遇到了问题。我需要制作一个带有URL图像作为背景的按钮/缩略图。我在Kivy用户论坛here上得到了一些帮助,但我仍然有点陷入困境。以下是我的代码:

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实例视为小部件?

1 个答案:

答案 0 :(得分:0)

缩略图至完整图像

让UrlBut在实例化时创建并存储缩略图。您可以使用PIL执行此操作,请按照本教程http://andrius.miasnikovas.lt/2010/04/creating-thumbnails-from-photos-with-python-pil/

进行操作

然后,让on_press方法(或等效方法)创建包含完整尺寸图像的弹出窗口或叠加层。

将UrlBut视为小工具

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

Kivy文档说kv文件中定义的模板可以在你的Python代码中实例化(我正在调整该链接给出的例子):

您的kv语言模板:

[UrlBut@ButtonBehavior+AsyncImage]:
    source: ctx.source
    button_grab: True
    on_press: eval(ctx.on_press)

然后在Python中,您可以使用:

实例化模板
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循环自动执行此操作:

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