Kivyでラベルのテキストに日本語を表示させる方法

2019年12月23日

みなさまおはこんばんにちは、せなです

今回はKivyのラベルテキストに日本語を表示させる方法を説明したいと思います

ラベルに日本語を表示させる

ラベルはKivyでよく使うモジュールの一つなので日本語表示を行いたい、という方はたくさんいるかと思います
ですが、Kivyではデフォルトで対応しているフォントは限られているので、日本語を入力すると文字化けしてしまいます

対処するためには、ラベルモジュール内で「font_name」を使用する必要があります
font_nameには日本語フォントのディレクトリを指定します

以下にKv LanguageとPythonのみでの記述方法を記載します

Kv Language

Label:
    font_name: '/path/font/meiryo.ttc'
    text: 'はろー ワールド'

Pythonのみ

from kivy.app import App
from kivy.uix.label import Label

class MainApp(App):
    def build(self):
        return Label(font_name='/path/font/meiryo.ttc', text='はろーワールド')

if __name__ == '__main__':
    MainApp().run()

font_nameに日本語対応のフォントファイルを指定すれば日本語表示が可能になります

日本語フォントはネット上からダウンロードしてきてもよいですし、Windows10であれば「コントロールパネル」→「デスクトップのカスタマイズ」→「フォント」の中にあるものをコピぺするなりして使用することもできます(上記ではメイリオを使用してます)

※ファイル表示の際に以下のようなエラーが起きることがあります

UnicodeDecodeError: 'cp932’ codec can’t decode byte 0x82 in position 220: illegal multibyte sequence

その場合は、「kivy\lang\builder.py:288行目」を「with open(filename, 'r',encoding="utf-8_sig") as fd:」のような形に変更することで、解消できます
(ほかにいい方法あるようでしたら、教えていただけると嬉しいです。。。)

最後に

簡単にですが、Kivyのラベルテキストで日本語を使用する方法を説明させていただきました

デフォルトでは英語とか一部のフォントしか使えないので、不便ですね
今後のアップデートで、デフォルトで日本語フォント使えるようにしてくれないかな~

ここまで読んで下さり、ありがとうございました
ではでは~