Widget Parameter:
kivy widget constructor parametor를 추가하고 싶을 때, property 명시하기 위해 keyword argument를 사용한다.

font:
한글폰트등의 폰트 적용 방법. 폰트도 하나의 StringProperty이다.
font_name으로 적용한다.

  • 눈누에서 무료폰트를 확인할 수 있음.

connect .kv with .py:
self.ids.~으로 접근하는 경우도 있으며,
layout_content=ObjectProperty(None)와 같이 Property를 생성하면, 해당 .kv 클래스에서 동일 name으로 사용하는 방식도 있다.

dynamic added scroll view:
scroll view에 들어갈 widget들이 많을 때, 그걸 동적으로 추가하고 넣어주는 코드가 필요하다. 인스타나 페북도 그런 것들의 일종이고.. 이거 없으면 kivy는 한 번에 다 보여주려고 하면서 죽어버린다.

mark up:
markup=True와 함께, text에 부분적으로 color, font 등의 수정을 할 수 있다. 그니까 책에서 배운건 text 전체에 적용되는데, 이건 딱 그 일부분만 적용되도록 할 수 있다는 것이다.

action bar:
action bar를 top: root.height로 위치 설정을 하였을 때, 윈도우에서 제대로 설정 되었지만, 안드로이드에서는 위에 상태표시줄까지 위치로 잡아 그만큼 잘리는 현상이 발생하였다.
해당 코드를 pos_hint: {'top': 1}로 해결할 수 있다.

label size

label의 text에 따라 label size가 조절되지 않아 엄청 못생기고 밉게 보이는 경우에 대한 해답을 각각 .py, .kv에서 찾았다.

label의 text에 따라 size를 조절해주는 코드

    l.bind(width=lambda s, w: s.setter('text_size')(s, (w, None)))
    l.bind(texture_size=l.setter('size'))

width에 따라 s(label)의 text_size를 setter로 (w, None)으로 설정. 즉, text_sizewidth로 설정하는 것

kv 파일에서 text에 따라 size를 조절해주도록 하는 코드

    text_size: self.width, None
    size_hint: 1, None
    height: self.texture_size[1]

와 같이, text_sizewidth로 맞추고, height를 width로 정해진 texture_size의 값으로 설정.

주의사항:
위와 같은 size 조절은 bind로 발생함.
즉 width와 texture_size가 변경될 때 dynamic하게 코드를 변경하는 것.
따라서 위와 같은 코드 바로 뒤에 l.height와 같은 코드를 사용해도 height를 구할 수 없음.

  • 실제로 scrollview 구현 중 height에 따른 scroll 위치를 적용하는데 애를 먹음.
  • l.bind(height=self.lavel_height_changed)와 같이, height에 bind를 통해 원하는 값들을 처리할 수 있음.