idを使用して特定のClickableImageを取得しようとするたびに、次のエラーが発生します。Python - Kivy:AttributeError:self.idsを取得しようとすると 'super'オブジェクトに属性 '__getattr__'がありません
AttributeError: 'super' object has no attribute '__getattr__'
私はこの問題の解決策を探すためにしようと時間を費やしてきた、私は同じ問題で他の人を見て、人々は、ビルダーのサイトを変更するには彼らに言った、それ理由ids属性などを取得するためには最初に呼び出す必要がありましたが、ビルダーを移動するたびに「クラス定義されていません」というエラーが発生します。すべての手がかりは?ここで
は私のコードです:
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()
、ここでは私の.kvファイルです:
# 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:
+ 'self.parent.parent.ids'を使用し、' self.ids'は – KeyWeeUsr