Python Kivy Tutorial – Sign in window

Kivy is a free, open source Python library that allows for quick and easy development of highly interactive multiplatform applications.

Kivy’s execution speed is comparable to the native mobile alternative, Java for Android or Objective C for iOS. Moreover, Kivy has the huge advantage of being able to run on multiple platforms, just as HTML5 does; in which case, Kivy performs better because it doesn’t rely on a heavy browser, and many of its components are implemented in C using the Cython library in such a way that most of the graphics processing runs directly in the GPU.

In this tutorial we will create a sign in window screen using python and the kivy language. If you are new here then I will recommend you to first see my tutorial on creating a Clock application with python kivy.

This way you can make a sign in screen with Python Kivy:

# File name – signin.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

class Signinwindow(BoxLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
    def validate_user(self):
        user = self.ids.username_field
        pwd = self.ids.pwd_field
        info = self.ids.info

        uname = user.text
        passw = pwd.text

        if uname == "" or passw == "":
            info.text = '[color=#FF0000]username and/ or password required[/color]'
        else:
            if uname == "admin" and passw == "admin":
                info.text= '[color=#00FF00]Logged in successfully![/color]'
            else:
                info.text = '[color=#FF0000]Invalid username and/or password[/color]'


class SigninApp(App):
    def build(self):
        return Signinwindow()

if __name__ == '__main__':
    sa = SigninApp()
    sa.run()

# File name – signin.kv

<Signinwindow>:
     id: main_win
     orientation: 'vertical'
     spacing: 10
     space_x: self.size[0]/3
     canvas.before:
          Color:
               rgba: (1,1,1,1)
          Rectangle:
               size: self.size
               pos:  self.pos

     BoxLayout:
          size_hint_y: None
          height:50
          canvas.before:
               Color:
                    rgba: (.90,.20,.20,.90)
               Rectangle:
                    size: self.size
                    pos:  self.pos
          Label:
               text: "Access Control"
               bold: True
               size_hint_x: .9
     BoxLayout:
          orientation: 'vertical'
          padding: main_win.space_x, 10
          spacing: 20
          BoxLayout:
               orientation: 'vertical'
               spacing: 10
               size_hint_y: .30
               size_hint_x: 1
               height: 100
               Label:
                    id: info
                    text: " "
                    markup: True
                    size_hint_y: None
                    height: 10
               TextInput:
                    id: username_field
                    hint_text: "User Name"
                    multiline: False
                    focus: True
                    on_text_validate: pwd_field.focus= True
               TextInput:
                    id: pwd_field
                    hint_text: "Password"
                    multiline: False
                    password: True
                    on_text_validate: root.validate_user()
          Label:
               id: sp
               size_hint_y: None
               height: 10
          Button:
               text: "Sign In"
               size_hint_y: .2
               size_hint_x: .90
               height: 20
               background_color: (.90, .20, .20,.90)
               background_normal: ''
               on_release: root.validate_user()
          Label:
               id: sp2

#Output-

If anyone got any errors, just mention in comments, I will send you these files.

Aman Kharwal
Aman Kharwal

Data Strategist at Statso. My aim is to decode data science for the real world in the most simple words.

Articles: 1610

Leave a Reply

Discover more from thecleverprogrammer

Subscribe now to keep reading and get access to the full archive.

Continue reading