【问题标题】:Kivy Button changing values unwantedly (size_hint)Kivy Button 意外更改值 (size_hint)
【发布时间】:2018-07-02 20:10:49
【问题描述】:

所以,我已经研究 kivy 库几天了,我做了一个简单的应用程序,其中包含一些模拟登录/注册环境的屏幕。我注意到的是,在我的 .kv 文件中,当我为我的小部件设置“全局参数”时,按钮参数根本没有改变。看看:

#: import FadeTransition kivy.uix.screenmanager.FadeTransition

Gerencia:
    transition: FadeTransition()
    TelaDeLogin:
    TelaDeCadastro:
    TelaEsqueci:
    TelaEmDesenvolvimento:

<Button>:
    size_hint: 1, 0.1
    font_size: 40
    color: 1, 1, 1, 1

<Label>:
    size_hint: 0.5, 0.1
    color: 1, 1, 0, 1
    font_size: 40 

<TextInput>:
    multiline: False
    size_hint: 0.5, 0.1


<TelaDeLogin>:
    name: "Login"
    FloatLayout:
        Button:
            on_release: app.root.current = "Desenvolvimento"
            pos_hint: {'x':0, 'y':0.2}
            text: 'Logar'

        Button:
            on_release: app.root.current = "Esqueci"
            pos_hint: {'x':0, 'y':0.1}
            text: 'Esqueci a senha'

        Button:
            on_release: app.root.current = "Cadastro" 
            pos_hint: {'x':0, 'y':0}
            text: 'Cadastre-se'

        Label:
            text: "Usuário"
            pos_hint: {'x':0.25, 'y':0.8}

        TextInput:
            pos_hint: {'x':0.25, 'y':0.7}

        Label:
            text: "Senha"
            pos_hint: {'x':0.25, 'y':0.6}

        TextInput:
            password: True
            pos_hint: {'x':0.25, 'y':0.5}

我省略了其他一些屏幕,但它们无关紧要,发生的事情是,我做了一些测试,更改““中的 size_hint 根本不会影响我的按钮的大小,它们是显然只是得到一些默认大小。发生的另一件奇怪的事情是,为了测试,我在 "" 和 "" 内对 font_size 做了一些更改,我放入 Label 的值也影响了屏幕上的按钮,颜色也一样。所以看起来我的按钮是从“”而不是从“”获取它们的值。有人知道发生了什么吗?

【问题讨论】:

  • 只是为了澄清,显然你不能在这里把文本放在“”里面。这就是为什么它们用引号引起来。

标签: python-3.x kivy kivy-language


【解决方案1】:

说明

您已覆盖基类 Label,而 Button 是以下 Kivy 文档中指定的标签。在您的 Kivy 应用中,Button 继承了您自定义的 Label 的 size_hintfont_sizecolor

Button

按钮是一个标签,其中包含在以下情况下触发的相关操作 按钮被按下(或单击/触摸后释放)。配置 按钮,相同的属性(填充,字体大小等)和大小 系统用于标签类

解决方案

为标签和按钮创建动态类。

  1. 创建一个继承自 Button 的动态类。用MyButton: 替换实例化的孩子Button:
  2. 创建一个继承自 Label 的动态类。用MyLabel: 替换实例化的孩子Label:

片段

<MyButton@Button>:
    size_hint: 1, 0.1
    font_size: 40
    color: 1, 1, 1, 1

<MyLabel@Label>:
    size_hint: 0.5, 0.1
    color: 1, 1, 0, 1
    font_size: 40 
...

<TelaDeLogin>:
    name: "Login"
    FloatLayout:
        MyButton:
            on_release: app.root.current = "Desenvolvimento"
            pos_hint: {'x':0, 'y':0.2}
            text: 'Logar'

        MyButton:
            on_release: app.root.current = "Esqueci"
            pos_hint: {'x':0, 'y':0.1}
            text: 'Esqueci a senha'

        MyButton:
            on_release: app.root.current = "Cadastro" 
            pos_hint: {'x':0, 'y':0}
            text: 'Cadastre-se'

        MyLabel:
            text: "Usuário"
            pos_hint: {'x':0.25, 'y':0.8}

        TextInput:
            pos_hint: {'x':0.25, 'y':0.7}

        MyLabel:
            text: "Senha"
            pos_hint: {'x':0.25, 'y':0.6}

        TextInput:
            password: True
            pos_hint: {'x':0.25, 'y':0.5}

输出

【讨论】:

  • 非常感谢,效果很好。知道我可以为同一类型的小部件设置不同的参数也非常有用。
  • 请记住将问题标记为已回答,方法是单击解决了您的问题的答案左侧的绿色轮廓复选标记。这将答案标记为“已接受”,并通过扩展将问题标记为“已接受答案”
猜你喜欢
  • 2021-10-06
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多