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のプロパティには、以下のものなどがあります。
名前 | タイプ | 内容 |
---|---|---|
justify | Gtk.Justification | 複数行のテキストをどのように揃えるかを指定する。 既定値:Gtk.Justification.LEFT |
label | str | 表示するテキストを指定する。 既定値:” |
max_width_chars | int | ラベルの希望する最大幅 (文字単位)。 既定値:-1 |
selectable | bool | ラベルのテキストをマウスで選択できるかどうかを指定する。 既定値:False |
use_underline | bool | ニーモニックを使用する場合は True。 既定値:False |
width_chars | int | ラベルのテキストが要求する幅 (文字単位)。 既定値:-1 |
xalign | float | 表示するテキスト位置の幅方向の位置を指定する。 0.0ならばGtk.Labelの左端になり、1.0ならばGtk.Labelの右端にテキストを表示する。 既定値:0.5 |
yalign | float | 表示するテキスト位置の高さ方向の位置を指定する。 既定値:0.5 |
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 | テキストは全体に分散して配置される。 |
label2 = Gtk.Label(
label='Label2\n復数行表示です。\n左揃えです。',
justify=Gtk.Justification.LEFT
)
サンプルプログラム
以下のサンプルプログラムを実行すると、下図のようにプロパティの指定により表示方法を変更した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()