파이썬[Python]: kivy - 한글 사용


방법 1. 필요한 위젯에만 한글 사용

  Step 1. 폰트를 다운로드(무료일 경우 감사의 마음으로 사용합니다.)

  Step 2. 다운로드받은 폰트를 본인의 작업디렉토리(main.py 가 위치한 곳)에서 하위 디렉토리인 data 디렉토리를 만든 후, 그 안에 다시 fonts 란 디렉토리를 생성하여 줍니다.

  Step 3. 다운로드 받은 폰트를 fonts 디렉토리안에 복사 또는 이동시켜줍니다.
    (만약 디렉토리를 생성하기 싫으신 분은 작업디렉토리(main.py 가 위치한 곳)에 다운받은 폰트를 위치시킵니다. 그럴경우 다음과 같이 사용합니다.)

    KOREAN_FONT = os.getcwd() + '/다운받은폰트.ttf'

  Step 4. 필요한 위젯에 다음과 같이 인자를 넘겨줍니다.

    bt = Button(text='한글입니다.', font_name=KOREAN_FONT)


/// 예제, 순수코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import kivy
 
kivy.require('2.0.0')
 
import os
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.button import Button
 
Window.clearcolor = (.61, .81)
Window.size = (5631001)
Window.top, Window.left = 30800
 
KOREAN_FONT = os.getcwd() + '/data/fonts/NanumGothic.ttf'
 
class FantasticApp(App):
    def build(self):
        self.title = '한글입니다.'
 
        bt = Button(text='한글입니다.', font_name=KOREAN_FONT)
 
        return bt
 
 
FantasticApp().run()
 
cs

/// 예제, KV사용 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import kivy
 
kivy.require('2.0.0')
 
import os
from kivy.app import App
from kivy.core.window import Window
from kivy.lang import Builder
 
Window.clearcolor = (.61, .81)
Window.size = (5631001)
Window.top, Window.left = 30800
 
kv = '''
Button: 
    text: '한글입니다.'
    font_name: app.KOREAN_FONT
'''
 
 
class FantasticApp(App):
    KOREAN_FONT = os.getcwd() + '/data/fonts/NanumGothic.ttf'
 
    def build(self):
        self.title = '한글입니다.'
        return Builder.load_string(kv)
 
 
FantasticApp().run()
cs

/// 예제, KV사용 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import kivy
 
kivy.require('2.0.0')
 
from kivy.app import App
from kivy.core.window import Window
from kivy.lang import Builder
 
Window.clearcolor = (.61, .81)
Window.size = (5631001)
Window.top, Window.left = 30800
 
kv = '''
Button: 
    text: '한글입니다.'
    font_name: './data/fonts/NanumGothic.ttf'
'''
 
 
class FantasticApp(App):
    def build(self):
        self.title = '한글입니다.'
        return Builder.load_string(kv)
 
 
FantasticApp().run()
 
cs



방법 2. 필요한 위젯에만 한글 사용(kivy.core.text.LabelBase)

  Step 1. 폰트를 다운로드(무료일 경우 감사의 마음으로 사용합니다.)

  Step 2. 다운로드받은 폰트를 본인의 작업디렉토리(main.py 가 위치한 곳)에서 하위 디렉토리인 data 디렉토리를 만든 후, 그 안에 다시 fonts 란 디렉토리를 생성하여 줍니다.

  Step 3. 다운로드 받은 폰트를 fonts 디렉토리안에 복사 또는 이동시켜줍니다.
    (만약 디렉토리를 생성하기 싫으신 분은 작업디렉토리(main.py 가 위치한 곳)에 다운받은 폰트를 위치시킵니다. 그럴경우 다음과 같이 사용합니다.)

    from kivy.core.text import Label as CLabel
    CLabel.register('KOREAN_FONT', # alias
            fn_regular='./NanumGothic.ttf', # regular font
            fn_italic=None, # italic font
            fn_bold=None, # bold font
            fn_bolditalic=None) # bold/italic font


  Step 4. 필요한 위젯에 다음과 같이 인자를 넘겨줍니다.

    bt = Button(text='한글입니다.', font_name='KOREAN_FONT')


/// 예제, 순수코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import kivy
 
kivy.require('2.0.0')
 
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.button import Button
from kivy.core.text import Label as CLabel
 
Window.clearcolor = (.61, .81)
Window.size = (5631001)
Window.top, Window.left = 30700
 
# italic=None, bold=None ---> regular will be used
CLabel.register('KOREAN_FONT',  # alias
                fn_regular='./data/fonts/NanumGothic.ttf',  # regular font
                fn_italic=None,  # italic font
                fn_bold=None,  # bold font
                fn_bolditalic=None)  # bold/italic font
 
 
class FantasticApp(App):
    def build(self):
        self.title = '한글입니다.'
 
        bt = Button(text='한글입니다.', font_name='KOREAN_FONT')
 
        return bt
 
 
FantasticApp().run()
 
cs

/// 예제, KV사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import kivy
 
kivy.require('2.0.0')
 
from kivy.app import App
from kivy.core.window import Window
from kivy.lang import Builder
from kivy.core.text import Label as CLabel
 
Window.clearcolor = (.61, .81)
Window.size = (5631001)
Window.top, Window.left = 30800
 
# italic=None, bold=None ---> regular will be used
CLabel.register('KOREAN_FONT',                              # alias
                fn_regular='./data/fonts/NanumGothic.ttf',  # regular font
                fn_italic=None,                             # italic font
                fn_bold=None,                               # bold font
                fn_bolditalic=None)                         # bold/italic font
 
kv = '''
Button: 
    text: '한글입니다.'
    font_name: 'KOREAN_FONT'
'''
 
 
class FantasticApp(App):
    def build(self):
        self.title = '한글입니다.'
        return Builder.load_string(kv)
 
 
FantasticApp().run()
 
cs



방법 3. Kivy 전체 설정을 한글 폰트로 변경

  Step 1. 폰트를 다운로드(무료일 경우 감사의 마음으로 사용합니다.)

  Step 2. C:\사용자\본인디렉토리\ 에 가시면 .kivy 라는 디렉토리가 있습니다. 그 디렉토리로 이동하십시오.

  Step 3. config.ini 이라는 파일이 있을 겁니다. 그 파일을 열어보십시오.

    (만약을 대비하여 복사본을 만드세요.)

  Step 4. 내용을 살펴보면 아래와 같은 곳이 보일 것입니다.(kivy 기본값입니다.)

    default_font = ['Roboto', 'data/fonts/Roboto-Regular.ttf', 'data/fonts/Roboto-Italic.ttf', 'data/fonts/Roboto-Bold.ttf', 'data/fonts/Roboto-BoldItalic.ttf']

  'Roboto'는 다음에 있는 폰트들을 구성하는 이름인듯 싶습니다. 폰트가 전부 'Roboto-' 시작합니다.

  Step 5. 내용을 바꿉니다. 저는 다음과 같이 바꾸어 보았습니다. 리스트의 첫번째 요소에 '-' 을 붙여서 폰트의 이름을 만듭니다.

    default_font = ['Nanum', 'data/fonts/Nanum-Gothic.ttf']

  Step 6. 다운받은 폰트의 이름을 변경하여줍니다.(각자 원하는 이름으로 만드시면 됩니다.)

    NanumGothic.ttf -> Nanum-Gothic.ttf

  Step 7. 다운받은 폰트를 현재 작업중인 kivy 패키지가 있는 곳의 data/fonts/ 디렉토리에 복사 또는 이동시켜줍니다.
    (저의 경우 anaconda3(Pycharm 연동)를 사용하고 있습니다.
    C:\사용자\본인디렉토리\anaconda3\envs\Practice\Lib\site-packages\kivy\data\fonts\)

    from kivy.core.text import Label as CLabel
    print(CLabel.get_system_fonts_dir())    로 확인하실 수 있습니다.



/// 예제, 순수코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import kivy
 
kivy.require('2.0.0')
 
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
 
Window.clearcolor = (.3, .8, .31)
Window.size = (5631001)
Window.top, Window.left = 30800
 
 
class FantasticApp(App):
    def build(self):
        self.title = '한글입니다.'
 
        bl = BoxLayout(orientation='vertical')
 
        bt = Button(text='한글입니다.')
        lb = Label(text='한글입니다.')
 
        bl.add_widget(bt)
        bl.add_widget(lb)
 
        return bl
 
 
FantasticApp().run()
cs

/// 예제, KV사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import kivy
 
kivy.require('2.0.0')
 
from kivy.app import App
from kivy.core.window import Window
from kivy.lang import Builder
 
Window.clearcolor = (.3, .8, .31)
Window.size = (5631001)
Window.top, Window.left = 30800
 
kv = '''
BoxLayout:
    orientation: 'vertical'
    Button:
        text: '한글입니다.'
    Label:
        text: '한글입니다.'
'''
 
 
class FantasticApp(App):
    def build(self):
        self.title = '한글입니다.'
        return Builder.load_string(kv)
 
 
FantasticApp().run()
 
cs


* 실행환경: Microsoft Windows 10 Homes
* 인터프리터: 파이썬(Python 3.9)


– 당신을 응원합니다. –

댓글

이 블로그의 인기 게시물

파이썬[Python]: 내장함수 - from_bytes 메서드

파이썬[Python]: 내장함수 - __len__ 메서드

파이썬[Python]: 내장함수 - bit_length 메서드

C 언어: sin 함수, cos 함수, tan 함수