Как собрать данные ввода текста как переменную для использования в операторе If - PullRequest
0 голосов
/ 30 декабря 2018

Мне нужно знать синтаксис для сбора пользовательских вводимых данных в текстовых полях в kivy, цель состоит в том, чтобы кнопка входа в левом нижнем углу экрана работала так, как должна.Я хочу, чтобы программа могла собирать то, что пользователь вводит в поле пароля, а затем оператор if определяет, был ли пароль правильным.

Я знаю, что это возможно, я просто не знаю, какой синтаксисиспользовать, и документация мало говорит о текстовых полях.

Файл Python:

import kivy
from kivy.app import App
kivy.require("1.10.1")
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.uix.screenmanager import ScreenManager
from kivy.uix.textinput import TextInput

class Screen1(Screen):
    pass

class Screen2(Screen):
    pass

class ScreenManager(ScreenManager):
    pass

render = Builder.load_file("kvinterp.kv")

class MainApp(App):

    def build(self):
        return render

if __name__ == "__main__":
    MainApp().run()

.kv файл:

ScreenManager:
    Screen1:
    Screen2:

<Screen1>:
    name: "Screen1"
    Label:
        text: "Please Enter The Correct Password"
        pos_hint: {"x": .45, 'y':.9}
        size_hint: .1, .1
        font_size: 40
    TextInput:
        hint_text: "Password"
        size_hint: 0.3, 0.1
        pos_hint: {"x": 0.35, 'y': 0.5}
        multiline: False
    Button:
        text: "Login"
        on_release: app.root.current = "Screen2"
        size_hint: 0.17, 0.16
        pos_hint: {"x": 0, 'y':0}
        background_color: 1.23, 1.56, 1.70, .5

<Screen2>:
    name: "Screen2"
    Label:
        text: "You've Logged In!"
    Button:
        text: "Return"
        on_release: app.root.current = "Screen1"
        size_hint: 0.17, 0.16
        pos_hint: {"x": 0, 'y':0}
        background_color: 1.23, 1.56, 1.70, .5

1 Ответ

0 голосов
/ 30 декабря 2018

Идея состоит в том, чтобы передать текст функции при нажатии кнопки, но для идентификации элемента необходимо установить id:

*. Py

# ...

class Screen1(Screen):
    def validate_password(self, password):
        if password == "123456":
            self.manager.current = "Screen2"

# ...

*. Кв

# ...

<Screen1>:
    name: "Screen1"
    Label:
        text: "Please Enter The Correct Password"
        pos_hint: {"x": .45, 'y':.9}
        size_hint: .1, .1
        font_size: 40
    TextInput:
        id: password_ti # <---
        hint_text: "Password"
        size_hint: 0.3, 0.1
        pos_hint: {"x": 0.35, 'y': 0.5}
        multiline: False
    Button:
        text: "Login"
        on_press: root.validate_password(password_ti.text) # <---
        size_hint: 0.17, 0.16
        pos_hint: {"x": 0, 'y':0}
        background_color: 1.23, 1.56, 1.70, .5

# ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...