Kivy는 Python의 플랫폼 독립적 GUI 도구입니다. Android, iOS, Linux, Windows 등 다양한 운영체제에서 실행할 수 있어, 한 번 작성한 코드를 여러 플랫폼에서 그대로 사용할 수 있다는 것이 가장 큰 장점입니다. 주로 Android 애플리케이션 개발에 활용되지만, 데스크톱 애플리케이션 개발에도 충분히 사용할 수 있습니다.
Kivy는 화면 크기에 맞춰 자동으로 조정되도록 설계되어 있어 창 크기를 크게 신경 쓰지 않아도 됩니다. 하지만 사용자의 요구 사항에 따라 높이나 너비를 특정 값으로 고정하거나, 반대로 자유롭게 크기를 변경할 수 있도록 설정해야 하는 경우가 있습니다.
Kivy 창 크기 설정의 핵심: Config 모듈
Kivy에서 창 크기와 관련된 설정은 kivy.config.Config 모듈을 통해 제어합니다. 이때 주의할 점은 Config.set() 호출이 반드시 다른 Kivy 모듈을 임포트하기 이전에 실행되어야 한다는 것입니다. 그렇지 않으면 설정이 정상적으로 적용되지 않습니다.
1. 크기 조절이 가능한 창 (기본 동작)
창 크기를 고정하지 않고 사용자가 자유롭게 조절할 수 있도록 설정하는 예제입니다.
# 창 크기가 고정되지 않은 경우, 즉 사용자가 자유롭게 크기를 조절할 수 있는 경우
from kivy.config import Config
# 0은 끔(off), 1은 켬(on)을 의미합니다. 0 또는 1, True 또는 False 중 편한 방식을 사용하세요.
Config.set('graphics', 'resizable', True)
# kivy 모듈 임포트
import kivy
# kivy 버전 제한, 즉 이 버전 미만에서는 앱을 실행할 수 없습니다.
kivy.require("1.9.1")
# App 클래스를 상속받는 기본 클래스. app은 항상 애플리케이션 인스턴스를 참조합니다.
from kivy.app import App
# Label을 임포트하지 않고 사용하면 오류가 발생합니다.
from kivy.uix.label import Label
# App 클래스 정의
class MyLabelApp(App):
def build(self):
# Label은 화면에 텍스트를 표시합니다.
# 서로 다른 색상이 적용된 마크업 텍스트
l2 = Label(text ="[color=ff3333][b]Hello !!!!!!!!!!![/b][/color]\n[color=3333ff]World!!! :):):)[/color]",
font_size='20sp', markup=True)
return l2
# 객체 생성
label = MyLabelApp()
# 윈도우 실행
label.run()
2. 너비(width) 고정하기
창 크기 조절을 비활성화하고 너비를 500픽셀로 고정하는 예제입니다.
from kivy.config import Config
# 0은 끔(off), 1은 켬(on)을 의미합니다.
Config.set('graphics', 'resizable', '0')
# 창의 너비를 500으로 고정
Config.set('graphics', 'width', '500')
3. 높이(height) 고정하기
마찬가지 방법으로 창의 높이를 400픽셀로 고정할 수 있습니다.
from kivy.config import Config
# 0은 끔(off), 1은 켬(on)을 의미합니다.
Config.set('graphics', 'resizable', '0')
# 창의 높이를 400으로 고정
Config.set('graphics', 'height', '400')
주요 설정 옵션 정리
- resizable: 창 크기 조절 가능 여부를 설정합니다.
True/1이면 사용자가 자유롭게 크기를 변경할 수 있고,False/0이면 크기가 고정됩니다. - width: 창의 너비를 픽셀 단위로 지정합니다.
- height: 창의 높이를 픽셀 단위로 지정합니다.
이처럼 Config.set() 메서드를 활용하면 Kivy 애플리케이션의 창 크기를 유연하게 제어할 수 있습니다. 너비와 높이를 동시에 고정하고 싶다면 두 설정을 함께 지정하면 되며, 반응형 UI가 필요한 경우에는 resizable을 True로 유지하면 됩니다.