Изменять экземпляры Ellipse в kivy
from random import randint,choice
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.clock import Clock
from kivy.core.window import Window
from kivy.graphics import Color, Ellipse, Rectangle, Line
class Ball(Widget):
def __init__ (self,**kwargs):
super().__init__()
self.x=randint(100,700)
self.y=randint(100,900)
self.sx=1
self.sy=1
self.r = 40
self.color = Color(0,1,0,1)
self.elly= Ellipse(pos=(self.x-self.r/2,self.y-self.r/2),size=(self.r,self.r))
def draw(self):
self.canvas.add(self.color)
self.canvas.add(self.elly)
def on_touch_down(self, touch): #не работает
self.ball.pos=(touch.x,touch.y)
class Game(Widget):
def __init__ (self,**kwargs):
super().__init__()
for i in range(15):
self.ball=Ball()
self.add_widget(self.ball)
self.ball.draw()
def start(self): #не работает
Clock.schedule_interval(self.update, 0.1)
def update(self): #не работает
self.ball.pos = (self.ball.pos[0] + 1, self.ball.pos[1] + 1)
def on_touch_down(self, touch): #не работает
self.ball.pos=(touch.x,touch.y)
class MyApp(App):
def build(self):
self.game=Game()
self.game.start
return self.game
Никак не получается создать много шаров и патом взаимодействовать с ними.
В Tkinter можно было загнать их все в список,а в kivy получается ошибка.
Ответы (1 шт):
Автор решения: Xyanight
→ Ссылка
Ошибка 1:
class MyApp(App):
def build(self):
self.game=Game()
self.game.start() # но не self.game.start
return self.game
Ошибка 2:
class Game(Widget):
def update(self, interval): # но не def update(self):
...
Ошибка 3:
def on_touch_down(self, touch):
...
# обязательно нужно вернуть результат
return super().on_touch_down(touch)
Это только при первом взгляде на ваш код...