1

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

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

4

1 回答 1

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)
于 2013-04-15T23:12:20.857 回答