首页 > 解决方案 > AttributeError:“超级”对象在 Kivy 中没有属性“__getattr__”

问题描述

我想设置播放器速度,但出现此错误AttributeError: 'super' object has no attribute '__getattr__。我怎样才能在其他班级以这种速度工作。我不知道,为什么会出现这个错误,因为我是self.ids在网上找到的。那些人没有那个错误,但我有,为什么?如何解决?谢谢

我的蟒蛇:

from kivy.app import App
from kivy.uix.image import Image
from kivy.uix.gridlayout import GridLayout
from kivy.graphics import RoundedRectangle, Color
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.uix.floatlayout import FloatLayout
from kivy.lang.builder import Builder
from kivy.uix.widget import Widget
from kivy.clock import Clock
from kivy.uix.button import Button
from kivy.config import Config
from kivy.uix.label import Label
from kivy.properties import NumericProperty
Config.set('graphics', 'fullscreen', 'auto')
Config.set('graphics', 'window_state', 'maximized')
Builder.load_file("game.kv")
class Menu(Screen):
    pass
class LevelSelection(Screen):
    pass
class Level1(Screen):
    def on_enter(self, *args):
        Clock.schedule_interval(self.update, 1/30)
    def update(self, *args):
        self.ids.player.speed += 500* 1/30
        self.ids.Player.y += self.ids.player.speed * 1 /30
class Game(Screen):
    pass
class Player(Image):
    speed = NumericProperty(0)
class Full(App):
    def build(self):
        sm = ScreenManager()
        sm.add_widget(Menu(name="menu"))
        sm.add_widget(LevelSelection(name="levels"))
        sm.add_widget(Game(name="game"))
        sm.add_widget(Level1(name="level1"))
        return sm
if __name__ == "__main__":
    Full().run()

我的.kv:

<MenuButton@Button>:
    font_size :"50sp"
    background_normal : "bt1_normal.png"
    background_down : "bt1_down.png"
    border:90,90,90,90
<Level@Button>:
    font_size :"50sp"
    background_normal : "bt2_normal.png"
    background_down : "bt2_down.png"
<LevelSelection>:
    BoxLayout:
        canvas:
            Color: 
                rgba:1,1,1,1
            Rectangle:
                pos:self.pos
                size:self.size
                source:"backgrounf.png"
        orientation:"vertical"
        padding:"100dp", "10dp"
        spacing:"150dp"
        Widget:
        BoxLayout:
            padding:"100dp"
            spacing:"100dp"
            Level:
                text:"1"
                on_release:
                    app.root.current = "level1"
                
<Menu>:
    BoxLayout:
        canvas:
            Color: 
                rgba:1,1,1,1
            Rectangle:
                pos:self.pos
                size:self.size
                source:"backgrounf.png"
        orientation:"vertical"
        padding:"200dp", "50dp"
        spacing:"150dp"
        Widget:
        BoxLayout:
            padding:"100dp"
            spacing:"150dp"
            MenuButton:
                text:"start"
                on_release:
                    app.root.current = "levels"
            MenuButton:
                text:"exit"
                on_release:
                    app.stop()
<Player>:
    source:"player.png"
<Level1>:
    FloatLayout
        Player:
            id:player
            allow_stretch:True
            size_hint:None,None
            size:root.height/15,root.height/15
            x:root.width/20
            y:root.height/2

标签: pythonkivy

解决方案


推荐阅读