[Python,Gtk4] Gtk.Labelの使用について① Gtk.Labelへの複数行テキストの表示

Gtk.Labelの使用

 Gtk.Labelは、主に編集不可のテキストを表示するのに使用するWidgetであり、テキスト入力欄(Gtk.Entry)の横に配置して、その欄に入力する内容を説明するのに使用されます。

 Gtk.Labelには、一行だけではなく複数行のラベルを表示することができ、ラベルのWidget内での表示位置や複数行の場合は文字揃え方を指定できます。今回は、ラベルの表示の調整方法について紹介します。

今回紹介する内容
 ・ Gtk.Labelを作成する
 ・ Gtk.Labelを複数行のラベルにする
 ・ Gtk.Labelの文字の表示位置を指定する
 ・ Gtk.Labelの行揃えを指定する

Gtk.Labelの作成

Gtk.Labelを作成する

 Gtk.Labelは、Gtk.Label()と記入することで作成されます。

        label2 = Gtk.Label(
            label='Label2\n復数行表示です。\n左揃えです。',
            justify=Gtk.Justification.LEFT
        )

Gtk.Labelの主なプロパティ

 Gtk.Labelの指定もプロパティやメソッドで行います。Gtk.Labelのプロパティには、以下のものなどがあります。

名前タイプ内容
justifyGtk.Justification複数行のテキストをどのように揃えるかを指定する。
既定値:Gtk.Justification.LEFT
labelstr表示するテキストを指定する。
既定値:”
max_width_charsintラベルの希望する最大幅 (文字単位)。
既定値:-1
selectableboolラベルのテキストをマウスで選択できるかどうかを指定する。
既定値:False
use_underlineboolニーモニックを使用する場合は True。
既定値:False
width_charsintラベルのテキストが要求する幅 (文字単位)。
既定値:-1
xalignfloat 表示するテキスト位置の幅方向の位置を指定する。
0.0ならばGtk.Labelの左端になり、1.0ならばGtk.Labelの右端にテキストを表示する。
既定値:0.5
yalignfloat 表示するテキスト位置の高さ方向の位置を指定する。
既定値:0.5
Gtk.Labelの主なプロパティ

Gtk.Labelを複数行のラベルにする

 Gtk.Labelのテキストを複数行にするには、テキストを改行’\n’を使用して記入します。

        label2 = Gtk.Label(
            label='Label2\n復数行表示です。\n左揃えです。',
            justify=Gtk.Justification.LEFT
        )

Gtk.Labelの文字の表示位置を指定する

 Gtk.Labelの表示位置は、xalign(幅方向)、yalign(高さ方向)で指定します。

        label1 = Gtk.Label(label='Label1', xalign=0.0)

Gtk.Labelの行揃えを指定する

 Gtk.Labelの行揃えは、justifyで指定します。jusifyの値には以下のものを使用します。

内容
Gtk.Justification.LEFTテキストは左端揃えで配置される。(既定値)
Gtk.Justification.RIGHTテキストは右端揃えで配置される。
Gtk.Justification.CENTERテキストは中央揃えで配置される。
Gtk.Justification.FILLテキストは全体に分散して配置される。
Gtk.Justificationの種類
        label2 = Gtk.Label(
            label='Label2\n復数行表示です。\n左揃えです。',
            justify=Gtk.Justification.LEFT
        )

サンプルプログラム

 以下のサンプルプログラムを実行すると、下図のようにプロパティの指定により表示方法を変更したGtk.Labelが表示されます。

Gtk4で作成したGtk.Labelの画像。表示位置の指定や複数行表示を実施
import gi
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk


APPID = 'com.github.taniyoshima.g4_fblog_label'


class Gtk4TestTest(Gtk.Window):

    def __init__(self, app):
        Gtk.Window.__init__(
            self, application=app, title='Gtk.Label Test',
            default_width=300, default_height=200
        )

        box = Gtk.Box(
            orientation=Gtk.Orientation.VERTICAL, spacing=20,
            margin_top=20, margin_bottom=20,
            margin_start=20, margin_end=20
        )

        label1 = Gtk.Label(label='Label1', xalign=0.0)

        label2 = Gtk.Label(
            label='Label2\n復数行表示です。\n左揃えです。',
            justify=Gtk.Justification.LEFT
        )

        label3 = Gtk.Label(
            label='Label3\n復数行表示です。\n右揃えです。',
            justify=Gtk.Justification.RIGHT
        )

        box.append(label1)
        box.append(label2)
        box.append(label3)
        self.set_child(box)


class Gtk4TestApp(Gtk.Application):

    def __init__(self):
        Gtk.Application.__init__(self, application_id=APPID)

    def do_activate(self):
        window = Gtk4TestTest(self)
        window.present()


def main():
    app = Gtk4TestApp()
    app.run()


if __name__ == '__main__':
    main()
タイトルとURLをコピーしました