from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.clock import Clock
from kivy.core.audio import SoundLoader
import random

class MainScreen(Screen):
    def __init__(self, **kwargs):
        super(MainScreen, self).__init__(**kwargs)
        self.layout = BoxLayout(orientation='vertical')

        self.input = TextInput(text='Enter N seconds', multiline=False)
        self.start_button = Button(text='Start Timer')
        self.start_button.bind(on_press=self.start_timer)

        self.layout.add_widget(Label(text='Enter time interval in seconds:'))
        self.layout.add_widget(self.input)
        self.layout.add_widget(self.start_button)

        self.add_widget(self.layout)

    def start_timer(self, instance):
        try:
            seconds = int(self.input.text)
            self.event = Clock.schedule_interval(self.timer_action, seconds)
        except ValueError:
            self.input.text = 'Please enter a valid number'

    def timer_action(self, dt):
        # Play beep sound
        sound = SoundLoader.load('beep.wav')
        if sound:
            sound.play()
        
        # Change background color randomly
        random_color = [random.random() for _ in range(3)] + [1]
        self.layout.background_color = random_color

class MyApp(App):
    def build(self):
        sm = ScreenManager()
        sm.add_widget(MainScreen(name='main'))
        return sm

if __name__ == '__main__':
    MyApp().run()

