[Python,Gtk4] Gtk.Boxの使用について② メソッドによる設定

Gtk.Boxの使用について②

 Gtk.BoxなどWidgetの設定は、プロパティだけではなくメソッド(Methods)でも行えます。メソッドによるWidgetの設定は、主に定義した後に設定を変更する時に使用します。(例:Widgetを入力不可や非表示に変更する)

 今回は、Widgetの設定をメソッドで変更する方法について紹介します。

今回紹介する内容
 ・ メソッドによりWidgetの設定を変更する

Gtk.Boxの作成について②

メソッドによりWidgetの設定を変更する

Widgetで使用可能なメソッドの確認方法

 Widgetで利用可能なメソッドは、PyGObject API Referenceで確認できます。そのページで確認したいWidgetのページを選択して、表示されるMethod(例:Gtk.Box)の項目を見ることにより、①そのWidget用のメソッドと②そのWidgtの継承しているクラスや構造体のクラスが確認できます。
 継承や構造体のクラス名はリンクになっており、それらのメソッド(確認したWidgetで使用可能)も容易に確認することができます。

メソッドの使用方法

 メソッドによる指定は、(対象のWidget名).(メソッド名(引数))という形で記入します。

        box = Gtk.Box()
        # Gtk.WidgetのMethodsより
        box.set_size_request(300, 200)
        box.set_margin_top(20)
        box.set_margin_bottom(20)
        box.set_margin_start(20)
        box.set_margin_end(20)

Widgetの入力可否と表示を指定するメソッド

 よくメソッドによりWidgetに指定する内容に、入力の可否や表示についての指定があると思います。これらの指定は、以下のメソッドを使用しておこないます。

メソッド内容
set_sensitive(sensitive)Widgetへの入力が可能かどうかを指定する。
sensitive: bool型 True: 入力可能、 False: 入力不可
set_visible(visible)Widgetの可視できるかを設定する。
visible:bool型 True: 可視、 False: 不可視
よく使うと思うメソッド(Gkt.Windowのメソッド)

Gtk.Boxを使用したサンプルプログラム②

 下記サンプルは、前回のサンプルの外観の指定をメソッドで行うように変更したものです。サンプルの16行目から27行目までがメソッドで外観を指定している部分であり、1項目ずつ順番に記入しています。

 このサンプルを実行すると、前回のサンプルと同じように下図のような画面が表示されます。

Gtk4で作成したGtk.Boxの画像、ラベルを3つのせている。メソッドを使用して外観を指定
import gi
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk


APPID = 'com.github.taniyoshima.g4_fblog_box3'


class Gtk4TestTest(Gtk.Window):

    def __init__(self, app):
        Gtk.Window.__init__(
            self, application=app, title='Gtk.Box Test3')

        box = Gtk.Box()
        # Gtk.WidgetのMethodsより
        box.set_size_request(300, 200)
        box.set_margin_top(20)
        box.set_margin_bottom(20)
        box.set_margin_start(20)
        box.set_margin_end(20)

        # Gtk.OrientableのMethodsより
        box.set_orientation(Gtk.Orientation.VERTICAL)

        # Gtk.BoxのMethodsより
        box.set_spacing(30)

        self.set_child(box)

        label1 = Gtk.Label(label='Label1')
        label2 = Gtk.Label(label='Label2')
        label3 = Gtk.Label(label='Label3')

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


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をコピーしました