Я создал программу с Kivy , чтобы получить случайное изображение при нажатии кнопки.
Я написал код, но когда я хочу изменить источник, я получаю следующую ошибку: AttributeError: 'RootLayout' object has no attribute 'image'
Python:
class MinimalApp(App):
images_defenders2 = list(images_defenders)
title = 'My App'
def build(self):
number = random.randrange(0, length_code_list1)
img = (images_attackers[number]) #The variable with the random photo
print(img)
root = RootLayout()
return(root)
class RootLayout(AnchorLayout):
def say_hello(self):
def callback(self):
fonte = StringProperty('tachanka2.jpg')
self.image.source = (fonte)
self.image.fonte = "tachanka2.jpg"
callback(self)
pass
if __name__ == '__main__':
MinimalApp().run()
киловольт:
#:kivy 1.7.2
#:import kivy kivy
#:import random random
<RootLayout>:
anchor_x: 'center'
anchor_y: 'center'
Image:
id: image
source: 'nokk.png'
size: self.texture_size
AnchorLayout:
anchor_x: 'left'
anchor_y: 'bottom'
Button:
text: 'Attacco'
size_hint: 0.5, 0.2
font_size:64
on_press: {root.say_hello()}
AnchorLayout:
anchor_x: 'right'
anchor_y: 'bottom'
Button:
text: 'Difesa'
size_hint: 0.5, 0.2
font_size:64
Я попытался изменить источник непосредственно в файле kv, и мне это удалось, но мне нужно изменить его в файле python, потому что мне нужно создать функцию, которая выдает случайную фотографию из списка и помещает ее в переменную.
Затем эта переменная ставится в качестве источника изображения.
Поэтому, пожалуйста, помогите мне понять, почему возникает эта ошибка и как ее исправить.
Кусок кода, который вызывает эту ошибку:
class RootLayout(AnchorLayout):
def say_hello(self):
def callback(self):
fonte = StringProperty('tachanka2.jpg')
self.image.source = (fonte)
self.image.fonte = "tachanka2.jpg"
callback(self)
pass