LoginSignup
0
0

KivyのLabelウィジェットで日本語を扱う

Posted at

ご挨拶

はじめまして、Reimyと申します。よろしくお願いします。はじめてのQiita投稿です。弊社で過去に開発・販売したシステムを日本国内向けに日本語化しているのですが、いろいろなところでマルチバイト文字コードに悩まされています。

本題

まずはQiitaのデビュー戦ということで、Kivy の文字列を描画するウィジェットLabelで日本語をあつかうという簡単なところから始めさせてください。でも、同じ話題や投稿はたくさんありますね。

前提条件

Kv Languageを使う方法もありますが、ここではPythonのみのコードで、とさせてください。それから個人使用では気にしなくてもいいことなのですが、商用で日本語表記を使う場合、フォントのライセンスも気になるところです。スマホアプリなどあらかじめシステムに入っているフォントを使用するならいいのですが、組み込みシステムなどの場合、OSが使う日本語フォントが入っていれば良いのですが、入っていない場合インストールしなければなりません。そのシステムが商用利用時は知的財産権等に引っかかることもあります。この場合商用利用可能なフリーフォントを使うことになります。ここでは、このフリーフォントを使った例をご説明いたします。フリーフォントは仮称で表記し、ファイル名abcd.ttf とします。

デモコード

下記はウィンドウを表示して、ウィンドウ内に文字列を表示する処理です。

main.py

    from kivy.app import App
    from kivy.uix.floatlayout import FloatLayout
    from kivy.uix.label import Label
    
    class   BNApp(App):
        def build(self):
            layout = FloatLayout()
            # 文字列を描画する
            title_label = Label(text='[color=ff3333]ブランシュネージュ',
                        # 使用するフォントの指定
                        font_name='abcd.ttf',
                        # フォントサイズの指定
                        font_size='30px',
                        # 描画座標位置の指定
                        pos=(50, 200),
                        # サイズの相対指定 高さの指定 Text Markup使用
                        size_hint=(1, None), height=40, markup=True)
            layout.add_widget(title_label)
            return layout

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

実行結果

Result_Image.png

コード解説

上記の例では、ウィンドウを表示してその中に文字列をLabelウィジェットで表示しています。表示したいテキストは、textプロパティに '[color=ff3333]ブランシュネージュ' として指定しています。テキストの色はText Markup を使って指定します。Text Markupでさまざまな装飾ができますが、ここでは割愛させてください。コード例では [color=ff3333] として16進数カラーコードを使って指定しています。また、ウィンドウ内の表示したい位置を指定するには、posプロパティを使います。ここでは(100, 200)の座標を指定しています。この場合、文字列はウィンドウ内の (100, 200) の位置に配置されますが、注意しないといけないのは、この座標は文字列の左下隅となります。また、Kivyではウィンドウの左下隅を原点 (0, 0) としていますので、OpenCVなどと併用するときは要注意です。

参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0