파이썬[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 = (.6, 1, .8, 1) Window.size = (563, 1001) Window.top, Window.left = 30, 800 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 = (.6, 1, .8, 1) Window.size = (563, 1001) Window.top, Window.left = 30, 800 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 = (.6, 1, .8, 1) Window.size = (563, 1001) Window.top, Window.left = 30, 800 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 = (.6, 1, .8, 1) Window.size = (563, 1001) Window.top, Window.left = 30, 700 # 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 = (.6, 1, .8, 1) Window.size = (563, 1001) Window.top, Window.left = 30, 800 # 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, .3, 1) Window.size = (563, 1001) Window.top, Window.left = 30, 800 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, .3, 1) Window.size = (563, 1001) Window.top, Window.left = 30, 800 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)
– 당신을 응원합니다. –
댓글
댓글 쓰기