2015/12/29

GTK+ で Label の背景色を変更する

Windowless Widget は背景色を変更することができない

Label, Button, Paned, Frame などの Windowless Widget は背景色を変更することが出来ないそうです。
そのため、以下のようなコードを書いても背景はデフォルトのままです。

// 以下は Gtkmm のコードですが、GTK+ でも同様に書くと動作しません
Gtk::Label* label = Gtk::manage(new Gtk::Label());
label->modify_bg(Gtk::STATE_NORMAL, bg_color);
label->set_label(message);
widget->add(*label);

背景色は EventBox で変える

ではどうするのかと言うと、以下のように EventBoxLabel 等を入れ子にして、 EventBox の背景色を変えるという方法を使うようです。

Gtk::Label* label = Gtk::manage(new Gtk::Label());
label->set_label(message);
Gtk::EventBox* ebox = Gtk::manage(new Gtk::EventBox());
ebox->modify_bg(Gtk::STATE_NORMAL, bg_color);
ebox->add(*label);
widget->add(*ebox);

参考
以下に情報がありますPython インターフェースですが
PyGTK FAQ Entry

0 件のコメント: