Python | Create a stopwatch using clock object in kivy using .kv file - GeeksforGeeks

01 Feb, 2021
Kivy is a platform-independent GUI tool in Python. As it can be run on Android, IOS, Linux and Windows, etc. It is basically used to develop the Android application, but it does not mean that it can not be used on Desktop applications. 
 Kivy Tutorial – Learn Kivy with Examples.
Clock Object: The Clock object allows you to schedule a function call in the future; once or repeatedly at specified intervals. You can get the time elapsed between the scheduling and the calling of the callback via the dt argument: 
Python3
# define callbackdef my_callback(dt):    pass # clock.schedule_interval with time specifiedClock.schedule_interval(my_callback, 0.5) # clock.schedule_once with time specifiedClock.schedule_once(my_callback, 5) # call my_callback as soon as possible.Clock.schedule_once(my_callback)
Note: If the callback returns False, the schedule will be canceled and won’t repeat.  
In this, we are going to create the kivy the stopwatch and we are creating 3 buttons in this which are the start, pause, resume. 
It is good to use kivy inbuilt module while working with clock and: from kivy.clock import Clock
 
Basic Approach:  
1) import kivy
2) import kivyApp
3) import Builder
4) import Boxlayout
5) Import clock
6) import kivy properties(only needed one)
7) Set minimum version(optional)
8) Create the .kv code:
     1) Create Buttons
     2) Add call to button
     3) Add label 
9) Create Layout class
10) Create App class
11) return Layout/widget/Class(according to requirement)
12) Run an instance of the class
# Implementation of the Approach:  
Python3
'''Code of How to create Stopwatch'''    # Program to Show how to create a switch# import kivy module   import kivy         # base Class of your App inherits from the App class.   # app:always refers to the instance of your application  from kivy.app import App      # this restrict the kivy version i.e # below this kivy version you cannot # use the app or software kivy.require('1.9.0')  # The Builder is responsible for creating# a Parser for parsing a kv filefrom kivy.lang import Builder # The Properties classes are used# when you create an EventDispatcher.from kivy.properties import NumericProperty # BoxLayout arranges children in a vertical or horizontal box.# or help to put the children at the desired location.from kivy.uix.boxlayout import BoxLayout # he Clock object allows you to# schedule a function call in the futurefrom kivy.clock import Clock  # Create the .kv file and load it by using BuilderBuilder.load_string(''' <MainWidget>:     # Assigning the alignment to buttons    BoxLayout:        orientation: 'vertical'         # Create Button                 Button:            text: 'start'            on_press: root.start()                     Button:            text: 'stop'            on_press: root.stop()                     Button:            text: 'Reset'            on_press: root.number = 0     # Create the Label    Label:        text: str(round(root.number))        text_size: self.size        halign: 'center'        valign: 'middle'''')  # Create the Layout classclass MainWidget(BoxLayout):         number = NumericProperty()         def __init__(self, **kwargs):         # The super() builtin        # returns a proxy object that        # allows you to refer parent class by 'super'.        super(MainWidget, self).__init__(**kwargs)         # Create the clock and increment the time by .1 ie 1 second.        Clock.schedule_interval(self.increment_time, .1)         self.increment_time(0)     # To increase the time / count    def increment_time(self, interval):        self.number += .1     # To start the count    def start(self):                 Clock.unschedule(self.increment_time)        Clock.schedule_interval(self.increment_time, .1)     # To stop the count / time    def stop(self):        Clock.unschedule(self.increment_time) # Create the App classclass TimeApp(App):    def build(self):        return MainWidget() # Run the AppTimeApp().run()
Output: 
Note: 
In this when you press start count start, when press Restart it starts again and when pause it get paused.
abhigoya
Python-gui
Python-kivy
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
How to Install PIP on Windows ?
Enumerate() in Python
Different ways to create Pandas Dataframe
Python String | replace()
Reading and Writing to text files in Python
*args and **kwargs in Python
Create a Pandas DataFrame from Lists
How To Convert Python Dictionary To JSON?
Convert integer to string in Python