Кнопка Kivy изменяет значения нежелательно (size_hint) - PullRequest
0 голосов
/ 02 июля 2018

Итак, я изучал библиотеку kivy в течение нескольких дней, и я сделал простое приложение с несколькими экранами, имитирующими среду входа / регистрации. Что я заметил, так это то, что в моем файле .kv, когда я устанавливаю «глобальные параметры» для своих виджетов, параметры Button просто не меняются. Взгляните:

#: 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 внутри "<" Button ">" не влияет на размер моих кнопок вообще, они по-видимому, просто получить некоторый размер по умолчанию. Еще одна странная вещь, которая произошла, состояла в том, чтобы просто проверить, я сделал некоторые изменения в font_size как внутри "<" Button ">", так и внутри "<" Label ">", и значение, которое я поместил в Label, также повлияло на мои кнопки на экране То же самое случилось с цветом. Похоже, мои кнопки получают свои значения от "<" Label ">", а не от "<" Button> ". У кого-нибудь есть идея, что происходит?

1 Ответ

0 голосов
/ 02 июля 2018

Объяснение

Вы перезаписали базовый класс Label, а Button - это Label, как указано в следующей документации Kivy. В вашем приложении Kivy Button унаследовал size_hint , font_size и color от настроенной вами метки.

Кнопка

Кнопка - это Метка со связанными действиями, которые запускаются, когда кнопка нажата (или отпущена после нажатия / касания). Настроить кнопка, те же свойства (padding, font_size и т. д.) и размер Система используется как для класса Label

Решение

Создание динамических классов для Label и Button.

  1. Создать динамический класс с наследованием от Button. Замените инстанцированных детей, Button: на MyButton:
  2. Создать динамический класс с наследованием от Label. Замените инстанцированных детей, Label: на MyLabel:

Отрывки

<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}

выход

Img01 - Using Dynamic Classes for Button and Label

...