Форум сайта python.su
Учу Kivy по этому уроку(https://www.youtube.com/watch?v=tqQnUio-j4g&t=205s), но при запуске файла через cmd выдает:
self.ball.center = self.center
AttributeError: ‘NoneType’ object has no attribute ‘center’
Подскажите, в чем ошибка?
Код:
from kivy.app import App from kivy.uix.widget import Widget from kivy.properties import ( NumericProperty, ReferenceListProperty, ObjectProperty ) from kivy.vector import Vector from kivy.clock import Clock from random import randint class PongBall(Widget): velocity_x = NumericProperty(0) velocity_y = NumericProperty(0) velocity = ReferenceListProperty(velocity_x, velocity_y) def move(self): self.pos = Vector(*self.velocity) + self.pos class PongGame(Widget): ball = ObjectProperty(None) def serve_ball(self): self.ball.center = self.center self.ball.velocity = Vector(4, 0).rotate(randint(0, 360)) def update(self, dt): self.ball.move() if(self.ball.y < 0) or (self.ball.top > self.height): self.ball.velocity_y *= -1 if(self.ball.x < 0) or (self.ball.right > self.width): self.ball.velocity_x *= -1 class PongApp(App): def build(self): game = PongGame() game.serve_ball() Clock.schedule_interval(game.update, 1.0/60) return game if __name__ == '__main__': PongApp().run()
Отредактировано SlS (Март 20, 2020 07:09:52)
Офлайн
это значит что у ball = ObjectProperty(None) нет такого атрибута как center
посмотереть атрибуты объекта можете так print(self.ball.__dict__)
Офлайн
AD0DE412Довольно странная рекомендация. __dict__ содержит только данные объекта, и разумеется, там не представлены ни атрибуты его класса, ни атрибуты классов родителей.
посмотереть атрибуты объекта можете так
class Foo(object): @property def foo(self): return 0 f = Foo() print(f.__dict__)
Офлайн
ну .. да, только в киви почему то dir ведет себя не очень (может дело в радиусе кривизны моих рук)
и да в ObjectProperty() должен передоваться dict (если верить документации по kivy) ну или просто dict (вот в этом у меня нет уверености)
Офлайн
AD0DE412
AD0DE412что значит “ведет не очень”? Давайте мы будем все-таки как технические специалисты общаться в соответствующих рамках. Покажите наглядно, какие у вас есть проблемы с dir. Мне почему-то кажется, что вы сейчас пытаетесь сделать вумный вид, хотя я уверен, что вы не вполне понимали разницу между __dict__ и dir до моего комментария.
dir ведет себя не очень
AD0DE412это я вообще не понял к чему было сказано, и что означает
должен передоваться dict ну или просто dict
Офлайн
FishHookне могу т.к. не помню дело недели 2 назд было но помню что “не очень”
Давайте мы будем все-таки как технические специалисты общаться в соответствующих рамках. Покажите наглядно, какие у вас есть проблемы с dir.
FishHookага особено сейчас
вы сейчас пытаетесь сделать вумный вид
FishHookпожалуй да … спасиб
что вы не вполне понимали разницу между __dict__ и dir до моего комментария
FishHookя это тому что не понятно что создается этой строчкой ball = ObjectProperty(None) новое имя но тогда туда нужны и
это я вообще не понял к чему было сказано
Отредактировано AD0DE412 (Март 20, 2020 16:14:40)
Офлайн