Вход в пользовательский интерфейс в киви - PullRequest
0 голосов
/ 09 ноября 2018

Здравствуйте, у меня есть приложение в kivy, которое имеет имя пользователя и пароль

когда пользователь вводит admin admin, он переходит к функции python и говорит, что теперь проблема в

всякий раз, когда он переходит в функцию и выполняет функцию, он возвращает 1, как сравнить это 1 в файле kivy, так как я не знаю об этом и много искал, не повезло

import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.popup import Popup
from kivy.uix.label import Label
from kivy.uix.button import Button
import time
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang.builder import Builder
kivy.require('1.10.1')

class Admin(GridLayout,Screen):

    def valid(self,u,p):
        if "admin" == "admin" and "admin" == "admin":
            print('Access Granted !')

        else:
            print('Invalid User')


class UserPage(Screen):
    pass


class ScreenManagement(ScreenManager):
    pass


kv_file = Builder.load_file('Admin.kv')


class AdminApp(App):
    def build(self):
        return kv_file

r=AdminApp()
r.run()

ScreenManagement:
    Admin:
    UserPage:

<CustLabel@Label>:
    font_size:20

<Custbutton@Button>:
    font_size:20

<MyPopup@Popup>:
    auto_dismiss: False
    Button:
        text: 'Close me!'
        on_release: root.dismiss()

<Admin>:
    name: "Admin"
    id:check
    d_username:entry_username
    d_password:entry_password
    rows:5
    spacing:10

    BoxLayout:
        CustLabel:
            text:'Enter UserName'
        TextInput:
            id:entry_username
            multiline:False
            cursor_color: 1, 0, 0, 1
            hint_text: 'Username'
            padding_x: [50,50]



    BoxLayout:
        CustLabel:
            text:'Enter Password'
        TextInput:
            id:entry_password
            hint_text: 'Password'
            padding_x: [50,50]
            password: True
            multiline:False

    BoxLayout:
        Custbutton:
            text:'Go'
            on_press:check.valid(entry_username.text,entry_password.text)
            # i want to exectute on_release: app.root.current = "userpage" when its true ?????????????


<UserPage>:
    name: "userpage"
    Button:
        text: "back"
        on_release: app.root.current = "Admin"

1 Ответ

0 голосов
/ 09 ноября 2018

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

*. Py

class Admin(GridLayout,Screen):
    isAuthenticated =BooleanProperty(False)

    def valid(self,u,p):
        if "admin" == "admin" and "admin" == "admin":
            print('Access Granted !')
            self.isAuthenticated = True
        else:
            print('Invalid User')

*. Киловольт

Custbutton:
    text:'Go'
    on_press: check.valid(entry_username.text,entry_password.text)
    on_release: if root.isAuthenticated: app.root.current = "userpage"

Хотя для изменения экрана не рекомендуется использовать on_release, поскольку в общем случае аутентификация занимает некоторое время, поэтому лучше выслушать изменение состояния:

*. Киловольт

<Admin>:
    name: "Admin"
    id:check
    d_username:entry_username
    d_password:entry_password

    on_isAuthenticated: if root.isAuthenticated: app.root.current = "userpage"
    rows:5
    spacing:10

    BoxLayout:
        CustLabel:
            text:'Enter UserName'
        TextInput:
            id:entry_username
            multiline:False
            cursor_color: 1, 0, 0, 1
            hint_text: 'Username'
            padding_x: [50,50]

    BoxLayout:
        CustLabel:
            text:'Enter Password'
        TextInput:
            id:entry_password
            hint_text: 'Password'
            padding_x: [50,50]
            password: True
            multiline:False

    BoxLayout:
        Custbutton:
            text:'Go'
            on_press: check.valid(entry_username.text,entry_password.text)
...