각 bar
호출에서 file_name
속성을 선언하는 것이 문제입니다.
main.py :
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
class RootWidget(BoxLayout):
image_path = StringProperty('image1.png') # <<<<<<<<
def __init__(self, **kwargs):
super(RootWidget, self).__init__(**kwargs)
def change_image(self, path):
self.image_path = path
class TestApp(App):
def build(self):
return RootWidget()
if __name__ == '__main__':
TestApp().run()
test.kv :
<RootWidget>:
orientation: "vertical"
AsyncImage:
id: image
source: root.image_path
BoxLayout:
size_hint_y: 0.1
Button:
text: 'Image 1'
on_press: root.change_image("image1.png")
Button:
text: 'Image 2'
on_press: root.change_image("image2.png")
편집
속성은 클래스 속성이어야합니다 당신은 단지 하나의 파일 이름을 사용하여 이미지의 내용을 변경하려면
, 당신은 전화를 필요 reload
방법 (nocache
재산 True
과) :
main.py :
import os
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
class AsyncTest(BoxLayout):
img = ObjectProperty()
def show_icon(self):
self.img.source = "/sdcard/archive/icon_0.png"
def switch(self):
os.system("mv /sdcard/archive/icon_1.png /sdcard/archive/icon_0.png")
self.img.reload()
class TestApp(App):
def build(self):
return AsyncTest()
if __name__ == '__main__':
TestApp().run()
test.ḱv :
<AsyncTest>:
orientation: "vertical"
img: asyn_image
AsyncImage:
id: asyn_image
nocache: True
BoxLayout:
size_hint_y: 0.1
Button:
text: 'Show'
on_press: root.show_icon()
Button:
text: 'Switch'
on_press: root.switch()
출력 :
당신은 복사하여 붙여 넣을 수있는 예제를 만들 수 있습니다. 함수를 호출하는 위치 나 이미지 파일 이름을 변경하는 위치는 표시하지 않습니다. – EL3PHANTEN
의견을 보내 주셔서 감사합니다. 샘플 프로그램을 게시하려했지만 형식 오류 (들여 쓰기 오류?)로 거부했습니다. 나는 아직도 노력하고있다. – user9037109