如何在kivy中更改图像源?

时间:2016-04-23 14:14:34

标签: python image kivy

我正在尝试创建一个显示一张图片的应用。当我点击某个按钮时,该功能将改变该图像的来源,因此该图像将会改变。所以,我尝试只更改了line.source这一行,我认为正确的方法是使用stringproperty,但我也没有成功。所以,我的代码是: 的.py

class PrimeiroScreen(Screen):
    def __init__(self, **kwargs):
        self.name = 'um'
        super(Screen,self).__init__(**kwargs)
        fonte = StringProperty('cafe.jpg')

    def fc1(self):
        self.ids.image.source = (fonte)
        self.ids.image.fonte = "cafe.jpg"
        #self.ids.image.source = "cafe.jpg"


class MyImage(Image):
    fonte = StringProperty()

class RootScreen(ScreenManager):
    pass

和.kv:

<RootScreen>:
    PrimeiroScreen:

<PrimeiroScreen>:
    StackLayout:
        orientation: 'tb-rl'
        ScrollView:
            #size: 100, 100
            #pos_hint: {'center_x': .5, 'center_y': .5}
            GridLayout:
                cols: 1
                padding: 10, 10
                spacing: 5, 5
                size_hint: (None, None)
                size_hint_y:  None
                width: 500
                height: self.minimum_height
                Button:
                    text: "1"
                    #color: 0,0,0,1
                    font_size: '20dp'
                    size: (200, 40)
                    size_hint: (None, None)
                    on_release: root.fc1()
    AnchorLayout:
    Image:
        source:'logo.jpg'
        id: image

我正在学习AnchorLayout和StackLayout,所以它不起作用。 非常感谢大家,感谢我的新手问题。周末愉快。

1 个答案:

答案 0 :(得分:1)

当前代码没有定义fonte(至少对我而言是复制和粘贴),您需要使用self.fonte

但无论如何,您应该直接访问source,否则您需要创建另一个处理您的属性更新的函数,并在它发生更改时执行某些操作,即将其传递给source,这已经是一个StringProperty,因此在你到达之前,你会真正解决问题。

<RootScreen>:
    PrimeiroScreen:

<PrimeiroScreen>:
    StackLayout:
        orientation: 'tb-rl'
        ScrollView:
            #size: 100, 100
            #pos_hint: {'center_x': .5, 'center_y': .5}
            GridLayout:
                cols: 1
                padding: 10, 10
                spacing: 5, 5
                size_hint: (None, None)
                size_hint_y:  None
                width: 500
                height: self.minimum_height
                Button:
                    text: "1"
                    color: 0,0,0,1
                    font_size: '20dp'
                    size: (200, 40)
                    size_hint: (None, None)
                    on_release: image.source='newcafe.png'
    MyImage:
        source: 'cafe.jpg'
        id: image