如何在.kv文件中按钮的on_press事件中隐藏画布和矩形

Posted

技术标签:

【中文标题】如何在.kv文件中按钮的on_press事件中隐藏画布和矩形【英文标题】:how to hide canvas and rectangle in on_press event of Button in .kv file 【发布时间】:2018-07-05 20:01:39 【问题描述】:

我在 kivy 中创建了一个登录屏幕,我想在按下按钮后隐藏或禁用画布和矩形,请帮助我。这是我的代码

: 名称:“cany” 画布之前: 颜色: RGBA:1,1,1,1 长方形: 尺寸:self.size pos: self.pos 来源:'rect4190.png' 标签: id:user_lbl 文本:“用户名:” 颜色:.9,.1,.1,1 位置:40,400

      TextInput:
            id:username_txt
            size: cm(4),cm(0.66)
            pos: 125,437
            write_tab: False
            multiline: False

      Label:
            id:pass_lbl
            text: 'Password:'
            color: .9, 0.12, .1, 1
            pos: 40,350

      TextInput:
            id:password_txt
            size: cm(4),cm(0.66)
            pos: 125,387
            write_tab: False
            multiline: False

      Button:
            id:btn_login
            size: cm(2.33),cm(0.66)
            text: 'Login'
            pos:  160,200
            focus: True
            on_press:
                  root.validate(username_txt.text,password_txt.text)
                  user_lbl.opacity = 0
                  pass_lbl.opacity = 0
                  username_txt.opacity = 0
                  password_txt.opacity = 0
                  btn_login.opacity = 0

【问题讨论】:

【参考方案1】:

在你的 python 文件中:

from kivy.properties import NumericProperty

在 Python 文件的 Login 类中:

canvas_opacity = NumericProperty(1, rebind=True)

def vanish_canvas(self):
    self.canvas_opacity = 0

在你的 kv 文件中,

<LoginScreen>:
    name: "cany" 
    canvas.before: 
        Color: 
            rgba: 1,1,1, root.canvas_opacity
        Rectangle: 
            size: self.size 
            pos: self.pos 
            source: 'rect4190.png' 

    Button:
        text: 'clear canvas'
        on_press: root.clear_canvas()

这样做并没有删除图像,而是使相关画布中的所有内容都变得不可见。

Canvas 确实有一个内置的清除功能,但它似乎会清除所有内容,包括您不想删除的小部件。

【讨论】:

谢谢,我明白了,但是为什么我不能用向下的计数器来淡化它呢? 看来您必须使用 kivy 的动画功能才能使淡入淡出成为“动画”。 See more here

以上是关于如何在.kv文件中按钮的on_press事件中隐藏画布和矩形的主要内容,如果未能解决你的问题,请参考以下文章

Kivy:单击按钮时如何更新标签

我可以在 .kv 文件中定义小部件并在 .py 文件中引用它吗?

KIVY python:在python代码中使按钮可点击

如何使用On_Press更改动态创建的小部件的BG颜色并使用Pickle保存? (与Kivy的Python)

如何将函数绑定到kv文件中的按钮

如何避免“on_press”监听事件循环?