Python

[Python] KivyMD - MDIcon

llHoYall 2022. 9. 28. 21:04

이번에는 Icon에 대해 살펴보겠습니다.

Material Design에서 제공하는 아이콘들을 쉽게 가져다 쓸 수 있어요.

아이콘의 종류와 이름은 아래 링크를 참고해주세요.

https://materialdesignicons.com/

MDIcon

기본적인 아이콘 사용법은 다음과 같습니다.

from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.label import MDIcon


class MainApp(MDApp):
    def build(self):
        self.theme_cls.theme_style = "Dark"
        self.theme_cls.primary_palette = "Orange"

        layout = MDBoxLayout()

        icon1 = MDIcon(icon='gmail')
        layout.add_widget(icon1)

        return layout


MainApp().run()

Box layout으로 수평 배치를 하고, gmail 아이콘을 하나 추가했습니다.

MDIcon with Badge

모바일 앱을 보면 아이콘에 배지가 달린 모습을 많이 보셨을 텐데, 그 기능입니다.

icon2 = MDIcon(icon='facebook', badge_icon='numeric-7')
layout.add_widget(icon2)

icon3 = MDIcon(icon='twitter', badge_icon='numeric-3', badge_bg_color='blue')
layout.add_widget(icon3)

icon4 = MDIcon(icon='apple', badge_icon='numeric-5', badge_icon_color=[0, 1, 0, 0.8])
layout.add_widget(icon4)

icon5 = MDIcon(icon='android', badge_icon='numeric-2', badge_font_size=12)
layout.add_widget(icon5)

badge_icon property에 숫자 아이콘을 넣으면 이쁘게 배지로 달립니다.

크기와 색깔 변경도 손쉽게 가능합니다.

색깔은 ColorProperty를 따르기 때문에 문자열로 색깔 이름을 넣어주거나, [red, green, blue] 혹은 [red, green, blue, alpha] 형태의 리스트를 사용하시면 되요.

설정한대로 잘 반영이 되네요. ^^

Conclusion

기본적인 아이콘 사용은 이것으로 가능하실 거에요.

다만, 크기 변경 등의 기능은 현재로써는 kivy language로 작성해서 builder를 사용하는 방법 밖에는 안보이더라고요.

개인적으로 그런 방식은 비선호인데.....

관련 자료도 부족하고 해서 뭐하나 할 때마다 헤딩이 조금 필요하지만, 파이썬으로 이렇게 간단하게 이쁜 앱을 만들 수 있다는 장점 때문에 사용할 수 밖에 없죠. ㅋ