如何更改kivy中的图像源?
问题描述:
我正在尝试制作一个显示一个图像的应用程序。当我点击某个按钮时,该功能将更改此图像的来源,因此此图像将会更改。所以,我试图只改变行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,所以它不工作。 非常感谢大家,为了唤醒我的新手问题。愉快的周末。
答
事情是用你现在的代码没有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
你不需要编写'root.ids.image',单独'image'就足够了。 – jligeza