繁体   English   中英

Python Kivy TextInput无法正常工作?

[英]Python Kivy TextInput not working?

我使用kivy创建了一个简单的登录和注册屏幕,但是TextInput不允许我在其中输入内容吗? 在登录屏幕和注册屏幕上均发生此错误。 我试图在这里查找过去的问题,但找不到任何东西。

Python文件:

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

class Login_Screen(Screen):
    def login(self):
        if self.ids.username.text == "root" and\
            self.ids.passwrd.text == "123":
            print("Direct Entry")
            self.manager.current = "Login_Successful"
        else:
            print("Wrong Password")
            self.manager.current = "Login_Failed"
    def registration(self):
        self.manager.current = "Registration_Screen"

class LoginConfirmationScreen(Screen):
    pass

class Registration_Screen(Screen):
    def MainScreen(self):
        self.manager.current = "Login_Screen"

class Login_Failed(Screen):
    def MainScreen(self):
        self.manager.current = "Login_Screen"

class RootWidget(ScreenManager):
    pass

Builder.load_file("MainApp.kv")

class MainApp(App):
    def build(self):
        return RootWidget()

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

和MainApp.kv文件:

<RootWidget>:
    id: Main
    Login_Screen:
        id: login
        name: "Login_Screen"
    Login_Failed:
        id: Failed
        name: "Login_Failed"
    Registration_Screen:
        id: register
        name: 'Registration_Screen'


<Login_Screen>:
    GridLayout:
        rows:3
        cols:2
        Label:
            text: "Username:"
            font_size: 20
        TextInput:
            id: username
            multiline: False
            hint_text: 'Enter your Username'
        Label:
            text: "Password"
            font_size: 20
        TextInput:
            id: passwrd
            multiline: False
            hint_text: 'Enter your Password'
            password: True
        Button:
            text: "Register"
            on_press: root.registration()
        Button:
            text: "Sign In"
            on_press: root.login()

<Registration_Screen>:
    GridLayout:
        rows:3
        cols:2
        Label:
            text: 'First Name:'
            font_size: 20
        TextInput:
            id: FirstName
            multiline: False
            hint_text: 'Enter your First Name'
        Label:
            text: 'Surname'
            font_size: 20
        TextInput:
            id: Surname
            multiline: False
            hint_text: 'Enter your Surname'
        Button:
            text: "Create Account"
            on_press: root.MainScreen()


<Login_Failed>:
    BoxLayout:
        orientation: "vertical"
        Label:
            text: "Login Failed"
        Button:
            text: "Try again"
            on_press: root.MainScreen()

感谢帮助 :)

删除此:

Builder.load_file("MainApp.kv")

从py文件中获取,因为您是App实例,即:

class MainApp(App):

已经自动加载了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM