【问题标题】:How can I put two mode on kivymd text field?如何在 kivymd 文本字段上设置两种模式?
【发布时间】:2021-09-08 13:03:02
【问题描述】:

我正在制作一个登录屏幕,其中我们有两个文本字段(用户名和密码)

在用户名的文本字段中,我可以输入两个text field mode (on_error and persistent),就像我输入on_error一样,它仅在我单击文本字段时出现,所以我们不知道有错误。

请查看此视频,它包含我们的问题(不到一分钟).. https://youtu.be/sxx3-KqcNJQ

Design.kv

<LoginScreen>:
    GridLayout:
        cols: 1
        MDToolbar:
            title: "MainApp"

        RelativeLayout:
            # a card containing the fields and button for a login page
            MDCard:
                size_hint: 0.6, 0.6
                orientation: 'vertical'
                pos_hint: {'center_x': 0.5, 'center_y': 0.5}
                elevation: 10

                RelativeLayout:
                    MDLabel:
                        text: "Sign in"
                        theme_text_color: "Secondary"
                        pos_hint: {'center_y': 0.88, 'center_x': 0.55}
                        font_style: 'H4'

                    MDTextField:
                        id: username
                        hint_text: 'User name'
                        helper_text: ''
                        helper_text_mode: 'on_error'
                        icon_right: ''
                        size_hint: 0.8, .18
                        pos_hint: {'center_x': 0.5, 'center_y':  0.65}

                    MDTextField:
                        id: password
                        hint_text: 'Password'
                        password: True
                        password_mask: '•'
                        color_active: app.theme_cls.primary_light
                        icon_left: "key-variant"
                        size_hint: 0.8, .20
                        pos_hint: {'center_x': 0.5, 'center_y':  0.4}

                  
                    MDIconButton:
                        icon: "eye"
                        ripple_scale: .5
                        pos_hint: {'center_x': 0.85,"center_y": .4}
                        pos: password.width - self.width + dp(8), 0
                        on_release:
                            self.icon = "eye" if self.icon == "eye-off" else "eye-off"
                            password.password = False if password.password is True else True

                    MDFlatButton:
                        text: 'Sign in'
                        font_size: dp(18)
                        pos_hint: {'center_x': 0.8, 'center_y': 0.15}
                        text_color: app.theme_cls.primary_color
                        on_press: root.check_login()

Main.py

class LoginScreen(Screen):
    def check_login(self):

        login_csv = pd.read_csv('login.csv')
        i = 0

        for username in login_csv['username']:

            # if the username is empty the textfield turns red and shows the error message below
            if self.ids.username.text == '':
                self.ids.username.error = True
                self.ids.username.helper_text = 'This is a required field!'

            
            elif self.ids.username.text != username or self.ids.password.text != login_csv['password'][i]:

                # gives an error if the username or password is incorrect with the error message below
                self.ids.username.error = True
                self.ids.username.helper_text = 'Username or Password is incorrect!'
                self.ids.username.color_mode = 'custom'
                self.ids.username.line_color_focus = 1, 0, 0, 1
                self.ids.username.helper_text_color = 'error'
                i += 1

【问题讨论】:

    标签: python kivy kivy-language kivymd


    【解决方案1】:

    改变

    helper_text_mode: 'on_error'
    

    到`

    helper_text_mode: 'on_error' and 'persistent'
    

    它对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      相关资源
      最近更新 更多