如何在kivy中将图像值从python传递到kv文件?

时间:2017-07-15 03:59:08

标签: python kivy

我想将图像源值传递给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'

1 个答案:

答案 0 :(得分:2)

首先在窗口小部件的Save方法中评估kv文件。在设置__init__之前,这会在super调用中发生。您必须在self.img之前声明属性,或者将属性声明为类属性而不是实例属性。您可以在super(与使用py)或id1中执行此操作:

kv