2016-04-23 64 views
1

我正在尝试制作一个显示一个图像的应用程序。当我点击某个按钮时,该功能将更改此图像的来源,因此此图像将会更改。所以,我试图只改变行image.source,我认为正确的做法是使用stringproperty,但我也没有成功。所以,我的代码是: 的.py如何更改kivy中的图像源?

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,所以它不工作。 非常感谢大家,为了唤醒我的新手问题。愉快的周末。

回答

0

事情是用你现在的代码没有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 
+1

你不需要编写'root.ids.image',单独'image'就足够了。 – jligeza