我正在尝试创建一个显示一张图片的应用。当我点击某个按钮时,该功能将改变该图像的来源,因此该图像将会改变。所以,我尝试只更改了line.source这一行,我认为正确的方法是使用stringproperty,但我也没有成功。所以,我的代码是: 的.py
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,所以它不起作用。 非常感谢大家,感谢我的新手问题。周末愉快。
答案 0 :(得分:1)
当前代码没有定义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