我想将图像源值传递给kivy中的kv文件。这就是我所做的。
#main.py
from kivy.uix.boxlayout import BoxLayout
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import StringProperty
from kivy.uix.image import Image
class Page(BoxLayout):
id1=StringProperty()
def __init__(self):
super(Page, self).__init__()
self.id1="ellow"
self.img=StringProperty("logo.jpg")
class SimpleKivyApp(App):
def build(self):
return Page()
a=SimpleKivyApp()
a.run()
KV档案
#simplekivy.kv
<Page>:
canvas.before:
Color:
rgba:0,0,1,1
Rectangle:
pos: self.pos
size: self.size
Image:
pos_hint:{"center_x":0.4,"y":0.3}
color:255,1,1,1
size:70,70
source: root.img
Label:
pos:0,0
font_size:80
text:root.id1
Button:
size_hint:0.5,0.2
font_size:60
text:"Start"
on_press: app.onClick()
当我运行它时,它给我这个错误
AttributeError:'Page'对象没有属性'img'
答案 0 :(得分:2)
首先在窗口小部件的Save
方法中评估kv文件。在设置__init__
之前,这会在super
调用中发生。您必须在self.img
之前声明属性,或者将属性声明为类属性而不是实例属性。您可以在super
(与使用py
)或id1
中执行此操作:
kv