问题描述
我在kivy的for循环中创建了一组图像,这些图像具有“ buttonbehavior”属性,使其可以单击。我正在尝试将特定索引处的图像更改为单击时的另一图像,但它不起作用。
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager,Screen,FadeTransition
class ScreenManagement(ScreenManager):
def __init__(self,**kwargs):
super(ScreenManagement,self).__init__(**kwargs)
class Screen2(Screen):
def __init__(self,**kwargs):
super(Screen2,self).__init__(**kwargs)
Pass
class ImageButton(ButtonBehavior,Image):
pass
class Screen1(Screen,ButtonBehavior,Image):
def __init__(self,**kwargs):
super(Screen1,self).__init__(**kwargs)
for i in range(6):
self.btn= ImageButton(source='put_any.png',size_hint=(.3,.2),pos_hint={'center_x': .5,'center_y': .32})
self.add_widget(self.btn)
If i==0:
self.btn.bind(on_press=self.change_image)
def change_image(self,*args)
self.source='put_any.png'
class Application(App):
def build(self):
sm = ScreenManagement(transition=FadeTransition())
sm.add_widget(Screen1(name='screen1'))
sm.add_widget(Screen2(name='screen2'))
return sm
if __name__ == "__main__":
Application().run()
我希望在for循环中索引0处的图像在按下时变为另一张图像,但是它不起作用,请问我在做什么错。
解决方法
如果您引用self.source,则表示不会影响任何内容的Screen.source。
像这样更改功能:
def change_image(self,btn)
btn.source='put_any.png'