5.1.6 ボタンのラベルのフォントを設定する


gtk_container_get_children btn1
g_list_nth_data stat, 0
lbl = stat
pango_font_description_from_string "ms ui gothic, italic 12"
gtk_widget_override_font lbl, stat

 この部分のスクリプトは、特定のウィジェットを指定してGUIフォントを変更する処理のサンプルです。

 ここではまず、gtk_container_get_children関数で、直前で生成したボタンの上に載っているウィジェットのリストを取得しています。

この関数は、引数で指定したウィジェットに対して、プログラム上で明示的に追加したウィジェットのみを含むリストを返します。(今回操作したいのは、ボタン上のGtkLabelウィジェットなのですが、これは明示的に追加した扱いになっているようです)

 ここで返ってくるのは、GTK+独自のGListという型のデータのポインタです。ただし、リストされているウィジェットを取得するためにGListデータを直接いじる必要はありません。代わりに、GListのポインタと、インデックスを指定してg_list_nth_data関数を実行します。GTK+のマニュアルをよく探すと、このような親切な関数がけっこう見つかったりします。

いま操作しているボタンには、生成時に表示文字列を指定したGtkLabelウィジェットしか載っていないので、インデックスに0(=1番目)を指定してそれを取得しています。

 残り2行は、ウィジェットのGUIフォントを変更する処理です。pango_font_description_from_string関数を使い、PangoFontDescriptionオブジェクトの形でフォント情報を用意し、これとウィジェットのインスタンス値を引数としてgtk_widget_override_font関数を実行しています。

pango_font_description_from_string関数の引数には、フォント名・フォントスタイル・フォントサイズを列挙した文字列を指定してください。各要素は半角スペースで区切るだけでも大丈夫ですが、フォント名の後ろにカンマをつけておくと間違いがないでしょう。

フォントスタイルとフォントサイズは、いずれか、または両方を省略することができます。

フォントスタイルとして指定できる文字列は、有効なことが確認できているのは、"bold"、"heavy"、"italic"、"oblique"の4つです。ただし、Windows上で目視した限りでは、"bold"と"heavy"の違い、"italic"と"oblique"の違いはわかりませんでした。一度に複数のワードを半角スペースで区切って指定してもかまいません。

 以上は、特定のボタンに載っているラベルのフォントを変更するサンプルですが、もっとおおまかに、GTK+でのデフォルトのGUIフォントを変更する方法もあります。これについては、9章で説明します。

Prev - Table of contents - Next