2017-11-25 83 views
1

我从这里得到了一个有用的用户代码,它几乎是完美的。如何将两个不同的gif绑定到kivy中的切换按钮?

from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 
from kivy.lang import Builder 

Builder.load_string(""" 
<ExampleApp>: 
    id: main 
    orientation: "vertical" 
    Button: 
     size_hint_x: None 
     size_hint_y: None 
     height: 300 
     width: self.height 
     center: self.parent.center 
     text: "" 
     on_press: gif.anim_delay = 0.09 
     on_press: gif._coreimage.anim_reset(True) 

     Image: 
      id: gif 
      source: 'power_on.gif' 
      center: self.parent.center 
      height: 300 
      width: self.height 
      allow_stretch: True 
      anim_delay: -1 
      anim_loop: 1 


""") 

class ExampleApp(App, BoxLayout): 
    def build(self): 
     return self 


if __name__ == "__main__": 
    ExampleApp().run() 

我需要它使用两个不同的GIF的GIF POWER_ON时,它的切换上,当它切换关闭POWER_OFF GIF。所以我试图将其更改为切换按钮,并添加了

on_press: gif.source="power_off.gif" 

但这并没有奏效。它甚至从未玩过power_on gif,因为它立即将gif的源码更改为power_off

这样做的正确方法是什么?

回答

1

以下承认第一GIF是power_off.gif

- 考虑添加StringProperty进口,该属性将保持当前的GIF图像源

from kivy.properties import StringProperty 

-Add处理不同变化的方法:

class ExampleApp(App, BoxLayout): 
    power = StringProperty('power_off.gif') 

    def build(self): 
     return self 

    def change_state(self): 
     if self.power == 'power_on.gif': 
      self.power = 'power_off.gif' 
     else: 
      self.power = 'power_on.gif' 

- 那么你千伏添加这些变化:

Builder.load_string(""" 
<ExampleApp>: 
    id: main 
    orientation: "vertical" 
    Button: 
     size_hint_x: None 
     size_hint_y: None 
     height: 300 
     width: self.height 
     center: self.parent.center 
     text: "" 
     on_press: gif.anim_delay = 0.09 
     on_press: gif._coreimage.anim_reset(True); root.change_state() 

     Image: 
      id: gif 
      source: root.power 
      center: self.parent.center 
      height: 300 
      width: self.height 
      allow_stretch: True 
      anim_delay: -1 
      anim_loop: 1 


""") 
相关问题