I wrote a code for a kind of android lock thing, whenever I try to get an specific ClickableImage using the id it raises the following error:
AttributeError: 'super' object has no attribute '__getattr__'
I've spent hours trying to look for a solution for this problem, I looked other people with the same issue, and people told them to change the site of the builder, because it needed to be called first to get the ids attribute or something like that, but everytime I move the builder, it raises the error "class not defined". Any clues?
Here is my code:
from kivy.app import App
from kivy.config import Config
from kivy.lang import Builder
from kivy.graphics import Line
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.widget import Widget
from kivy.uix.image import Image
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.behaviors import ButtonBehavior
#Variables
cords = ()
bld = Builder.load_file('conf.kv')
class Manager(ScreenManager): pass
class Principal(Screen): pass
class ClickableImage(ButtonBehavior, Image):
def on_press(self):
self.source = 'button_press.png'
def on_release(self):
self.source = 'button.png'
self.ids.uno.source = 'button_press.png'
class canva(Widget):
def on_touch_down(self, touch):
global cords
with self.canvas:
touch.ud['line'] = Line(points=(touch.x, touch.y), width=1.5)
cords = (touch.x, touch.y)
def on_touch_move(self,touch):
global cords
touch.ud['line'].points = cords + (touch.x, touch.y)
def on_touch_up(self,touch):
self.canvas.clear()
class Api(App):
def build(self):
return bld
if __name__ == '__main__':
Api().run()
and here is my .kv file:
# conf to file: test.py
<Manager>:
Principal:
<Principal>:
GridLayout:
size_hint_x: 0.5
size_hint_y: 0.6
width: self.minimum_width
cols: 3
ClickableImage:
id: 'uno'
size: 10,10
source: 'button.png'
allow_strech: True
ClickableImage:
id: 'dos'
size: 30,30
source: 'button.png'
allow_strech: True
canva: