[파이썬] Kivy `ScreenManager` 및 화면 전환

Kivy는 파이썬으로 모바일 및 데스크탑 애플리케이션을 개발하기 위한 오픈소스 프레임워크입니다. Kivy에서는 ScreenManager를 사용하여 다중 화면을 관리하고 화면 간 전환을 쉽게 할 수 있습니다. 이번 블로그 포스트에서는 Kivy ScreenManager의 기본적인 사용법과 화면 전환 방법에 대해 알아보겠습니다.

ScreenManager 소개

ScreenManager는 Kivy에서 화면들을 관리하는 데 사용되는 클래스입니다. 화면을 관리하는 데 필요한 메서드와 속성을 제공하여 여러 화면 간의 전환과 상호작용을 용이하게 합니다. 다음은 ScreenManager의 주요 속성입니다.

ScreenManager 기본 사용법

다음은 Kivy에서 ScreenManager를 사용하여 화면을 관리하는 기본적인 예제 코드입니다.

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen

class ScreenOne(Screen):
    pass

class ScreenTwo(Screen):
    pass

class ScreenManagerApp(App):
    def build(self):
        screen_manager = ScreenManager()
        screen_manager.add_widget(ScreenOne(name='screen_one'))
        screen_manager.add_widget(ScreenTwo(name='screen_two'))
        return screen_manager

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

위 코드에서는 ScreenManagerApp 클래스를 정의하고 build 메서드 내에서 ScreenManager 객체를 생성하고 ScreenOneScreenTwo 객체를 추가합니다. ScreenOneScreenTwoScreen 클래스를 상속받아 각각의 화면을 구성합니다. 이 예제에서는 Screen 클래스에 아무런 내용이 없기 때문에 pass를 사용하여 빈 클래스를 만들어 주었습니다.

화면 전환

ScreenManager를 사용하면 current 속성을 사용하여 현재 화면을 변경할 수 있습니다. 다음은 화면 전환을 위해 Button 위젯을 사용하는 예제 코드입니다.

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.button import Button

class ScreenOne(Screen):
    def __init__(self, **kwargs):
        super(ScreenOne, self).__init__(**kwargs)
        self.add_widget(Button(text='Go to Screen Two', on_press=self.switch_screen))

    def switch_screen(self, instance):
        self.manager.current = 'screen_two'

class ScreenTwo(Screen):
    def __init__(self, **kwargs):
        super(ScreenTwo, self).__init__(**kwargs)
        self.add_widget(Button(text='Go to Screen One', on_press=self.switch_screen))
    
    def switch_screen(self, instance):
        self.manager.current = 'screen_one'

class ScreenManagerApp(App):
    def build(self):
        screen_manager = ScreenManager()
        screen_manager.add_widget(ScreenOne(name='screen_one'))
        screen_manager.add_widget(ScreenTwo(name='screen_two'))
        return screen_manager

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

위 코드에서는 각각의 화면(ScreenOne, ScreenTwo)에 Button 위젯을 추가하고 버튼을 클릭할 때 switch_screen 메서드가 호출됩니다. switch_screen 메서드 내에서 self.manager.current를 사용하여 현재 화면을 변경합니다. 이를 통해 화면 간에 전환이 이루어집니다.

결론

Kivy에서 ScreenManager를 사용하면 다중화면 애플리케이션을 쉽게 구축할 수 있습니다. ScreenManager의 기본적인 사용법과 화면 전환 방법에 대해 알아보았습니다. 이러한 기능을 활용하여 Kivy로 매력적이고 유저 친화적인 애플리케이션을 개발해보세요.