Kivy - Switch
The Switch widget in Kivy framework resembles the electrical switch that we use in our home to put a bulb or a fan ON or OFF. The switch on the app window can be flipped by swiping its active property to True or False.
The Switch class is defined in the "kivy.uix.switch: module.
from kivy.uix.switch import Switch switch = Switch(**kwargs)
When placed on the application window, a Switch object appears like this −
The Switch class defines a Boolean property named active, which indicates whether the switch is on/off. Generally, this property is attached to a callback function to invoke a desired action when its value changes from True to False or vice versa.
def callback(instance, value):
if value:
print('the switch is ON')
else:
print ('The switch is OFF')
switch = Switch()
switch.bind(active=callback)
Example
We shall use the Switch widget in the following code to start or stop playing an audio playback. The app design contains a label and a switch placed in a horizontal box layout.
The active property of Switch is bound to a switched() method. When ON, the Sound object is loaded and its play() method is called. On the other hand, when flipped to OFF, the stop() method gets invoked.
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.core.audio import SoundLoader
from kivy.uix.switch import Switch
from kivy.core.window import Window
Window.size = (720, 250)
class switchdemoapp(App):
def switched(self, instance, value):
if value == True:
self.sound = SoundLoader.load('sample.mp3')
self.l1.text = 'Playing. . .'
self.sound.play()
else:
self.sound.stop()
self.l1.text = 'Switch ON to Play'
def build(self):
box = BoxLayout(orientation='horizontal')
self.l1 = Label(
text = 'Switch ON to Play',
font_size = 32, color = [.8, .6, .4, 1]
)
box.add_widget(self.l1)
switch = Switch()
switch.bind(active = self.switched)
box.add_widget(switch)
return box
switchdemoapp().run()
Output
The program starts with the label asking the user to swipe the switch to ON. The label caption changes to 'Playing' message. Swipe the switch to OFF to stop the music from playing.