【问题标题】:I need to hide declared objects in .kv file我需要在 .kv 文件中隐藏声明的对象
【发布时间】: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

The "Z" bubble is always stationary in that corner

【问题讨论】:

    标签: python android kivy kivy-language python-class


    【解决方案1】:

    您可以通过将气泡的不透明度设置为零或将其置于屏幕外来隐藏气泡。

    您从CZ 的所有气泡都在同一个位置,因此您只能看到最后绘制的一个,即Z

    【讨论】:

    • 但是,如果我在 .kv 中初始化每个气泡的屏幕外位置,气泡“A”和“B”也会消失
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2013-06-03
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    相关资源
    最近更新 更多