如何在猕猴桃中使用on_press更改在for循环中创建的图像

问题描述

我在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'