【发布时间】:2021-05-14 15:59:48
【问题描述】:
我正在开发一个应用程序来帮助功能多样化的儿童学习阅读和写作。
在应用程序的第一个活动中,孩子们必须弹出指示字母的气泡,例如,弹出所有包含字母“A”的气泡。我有两个问题,第一个是我无法隐藏我在 .kv 中声明的气泡,正如您在图像中看到的那样,气泡“Z”在左下角出现不动,我认为出现该气泡是因为它是我在 .kv 中声明的最后一个。
另一个问题是我不能有多个带有相同字母的气泡。
文件.py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.image import Image
from kivy.properties import NumericProperty, ReferenceListProperty, ObjectProperty
from kivy.graphics import Ellipse
from kivy.vector import Vector
from kivy.clock import Clock
from random import randint
from kivy.uix.screenmanager import ScreenManager, Screen
Builder.load_file('bubble.kv')
class BubblePop(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 BubbleGame(Widget):
bubbleA = ObjectProperty(None)
bubbleB = ObjectProperty(None)
def serve_bubble(self):
self.bubbleA.center = self.center
self.bubbleA.velocity = Vector(1,0).rotate(randint(0,360))
self.bubbleB.center = self.center
self.bubbleB.velocity = Vector(1,0).rotate(randint(0,360))
def update(self, dt):
self.bubbleA.move()
if (self.bubbleA.y < 0) or (self.bubbleA.top > self.height):
self.bubbleA.velocity_y *= -1
if (self.bubbleA.x < 0) or (self.bubbleA.right > self.width):
self.bubbleA.velocity_x *= -1
self.bubbleB.move()
if (self.bubbleB.y < 0) or (self.bubbleB.top > self.height):
self.bubbleB.velocity_y *= -1
if (self.bubbleB.x < 0) or (self.bubbleB.right > self.width):
self.bubbleB.velocity_x *= -1
class BubbleApp(App):
def build(self):
game = BubbleGame()
game.serve_bubble()
Clock.schedule_interval(game.update, 1.0/60.0)
return game
if __name__ == '__main__':
BubbleApp().run()
文件.kv
#:kivy 1.9.0
<BubblePop>:
size: 100, 100
<BubbleGame>:
canvas.before:
Rectangle:
pos: self.pos
size: self.size
source: 'data/img/fondobosque.jpg'
bubbleA: bubble_A
bubbleB: bubble_B
bubbleC: bubble_C
bubbleD: bubble_D
bubbleE: bubble_E
bubbleF: bubble_F
bubbleG: bubble_G
bubbleH: bubble_H
bubbleI: bubble_I
bubbleJ: bubble_J
bubbleK: bubble_K
bubbleL: bubble_L
bubbleM: bubble_M
bubbleN: bubble_N
bubbleNN: bubble_NN
bubbleO: bubble_O
bubbleP: bubble_P
bubbleQ: bubble_Q
bubbleR: bubble_R
bubbleS: bubble_S
bubbleT: bubble_T
bubbleU: bubble_U
bubbleV: bubble_V
bubbleW: bubble_W
bubbleX: bubble_X
bubbleY: bubble_Y
bubbleZ: bubble_Z
FloatLayout:
BubblePop:
id: bubble_A
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_a/a.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_B
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_b/b.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_C
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_c/c.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_D
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_d/d.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_E
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_e/e.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_F
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_f/f.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_G
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_g/g.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_H
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_h/h.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_I
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_i/i.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_J
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_j/j.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_K
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_k/k.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_L
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_l/l.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_M
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_m/m.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_N
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_n/n.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_NN
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_ñ/ñ.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_O
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_o/o.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_P
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_p/p.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_Q
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_q/q.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_R
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_r/r.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_S
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_s/s.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_T
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_t/t.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_U
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_u/u.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_V
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_v/v.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_W
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_w/w.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_X
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_x/x.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_Y
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_y/y.png'
pos: self.pos
size: self.size
BubblePop:
id: bubble_Z
center: self.parent.center
canvas:
Ellipse:
source: 'data/img/letra_z/z.png'
pos: self.pos
size: self.size
【问题讨论】:
标签: python android kivy kivy-language python-class