Kivy中的登录系统

2024-09-27 09:26:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我是基维的新手,我想为桌面应用程序创建一个简单的登录系统。

以下是我的python代码:

class LoginPage(Screen):
    pass
class UserPage(Screen):
    pass
class ScreenManagement(ScreenManager):
    pass

kv_file = Builder.load_file('login.kv')
class LoginApp(App):
    def builder(self):
        return kv_file

LoginApp().run()

和基维档案

ScreenManagement:
    LoginPage:
    UserPage:
<LoginPage>:
    name: "login_page"
    BoxLayout:
        TextInput:
            id: login
        TextInput:
            id: passw
        Button:
            text: "go"
            on_release: app.root.current = "user"
<UserPage>:
    name: "user"
    Button:
        text: "back"
        on_release: app.root.current = "login_page"

我希望它只在我需要表单中的文本时才更改屏幕(例如-TextInput(login)=‘username’,TextInput(pass)=‘password’)。

我知道我需要写一个方法,但是我需要帮助。


Tags: nameidpageloginpasstextinputscreenclass
2条回答

在LoginPage下的.py代码中,可以初始化类属性,如用户名和密码。可以创建这些类属性,以便在类中的其他方法中使用。它们可以存储用户名和密码。例如:

class LoginPage(Screen):

      def __init__(self, username, password):
             self.username = username
             self.password = password

      def check_password(self):
             self.username = 'random_username'
             self.password = 'random_password'
             if self.ids.login.text == str(self.username) and self.ids.passw.text == str(self.password)
                          self.parent.current = 'user'

首先创建LoginPage类,并将kivy screen类作为参数传递。

其次,我们初始化了两个类属性:用户名和密码。我们给self.username和self.password的值username和password与参数username和password匹配。

第三,我们创建了一个名为check_password的函数,并传递self,以便它可以获得在initialize方法中定义的类属性(用户名和密码)。我们可以给这些属性值,所以我给self.username值'random_username',self.password值'random_password'。

第四,我们可以运行if语句,输入的用户名与self.username的值相匹配,在textinput框中输入的密码与self.password的值相匹配,当前页可以立即翻到您的用户页(self.parent.current='user')。

在您的.kv文件中,您需要“绑定”我们用按钮创建的函数,以便在释放按钮时启动此函数。 在.kv文件中,您可以将“go”按钮更改为以下内容:

  Button:
      text:'GO'
      on_release: root.check_password()

当您的按钮被释放时,它将启动我们刚刚创建的check_password功能,检查在文本输入框中输入的用户名和密码是否有效。

你必须创建一个方法,让我得到文本并进行验证。按下按钮时应调用此方法。如果凭据正确,则必须更改屏幕。

*.py

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang.builder import Builder

class LoginPage(Screen):
    def verify_credentials(self):
        if self.ids["login"].text == "username" and self.ids["passw"].text == "password":
            self.manager.current = "user"

class UserPage(Screen):
    pass

class ScreenManagement(ScreenManager):
    pass

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

class LoginApp(App):
    def builder(self):
        return kv_file

if __name__ == '__main__':
    LoginApp().run()

*.kv

ScreenManagement:
    LoginPage:
    UserPage:

<LoginPage>:
    name: "login_page"
    BoxLayout:
        TextInput:
            id: login
        TextInput:
            id: passw
            password: True # hide password
        Button:
            text: "go"
            on_release: root.verify_credentials()

<UserPage>:
    name: "user"
    Button:
        text: "back"
        on_release: app.root.current = "login_page"

相关问题 更多 >

    热门问题