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 で変える
ではどうするのかと言うと、以下のようにEventBox
に Label
等を入れ子にして、 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);
参考
以下に情報があります
PyGTK FAQ Entry
。PyGTK FAQ Entry