设置Gtk Label的背景颜色和字体颜色
GtkLabel是少数的几个不创建自己的窗口的GTK+控件之一.相反,它直接的将自己画在父控件上.这就是说:如果你想为GtkLabel控件设置背景,你需要改变它的父控件的的背景.
这是GTK+ FAQ 中"6.10. 如何给GtkLabel控件设置背景颜色?"给出的解释。一般情况下设置某个GtkWidget的背景都用一般情况下用函数 gtk_widget_modify_bg()。注意在gtk_widget_modify_bg()函数的说明里有一段话:
Note that "no window" widgets (which have the GTK_NO_WINDOW flag set) draw on their parent container's window and thus may not draw any background themselves. This is the case for e.g. GtkLabel. To modify the background of such widgets, you have to set the background color on their parent; if you want to set the background of a rectangular area around a label, try placing the label in a GtkEventBox widget and setting the background color on that.
其实这已经告诉了我们如何设置“无窗口”widgets背景颜色的方法:将GtkLabel包含在GtkEventBox里,然后用函数gtk_widget_modify_bg()设置GtkEventBox的背景。
设置GtkLabel的字体颜色用gtk_widget_set_markup()函数,该函数的第二个参数是一个markup string,详见Pango reference manual里PangoMarkupFormat的Pango Text Attribute Markup Language。以下为代码实现,仅供参考:
#include <gtk/gtk.h>
gchar * _(gchar *string);
int main(int argc, char *argv[])
GtkWidget *window, *event_box, *label;
GdkColor color;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
event_box = gtk_event_box_new();
gtk_container_add(GTK_CONTAINER(window), event_box);
color.red = 0xffff;
color.green = 0xffff;
color.blue = 0xffff;
gtk_widget_modify_bg(event_box,GTK_STATE_NORMAL, &color);
label = gtk_label_new(NULL);
gtk_label_set_markup(GTK_LABEL(label), \
_("<span foreground=\"#FF0000\">GtkLabel白色背景红色字体</span>"));
gtk_widget_set_size_request(label, 300, 200);
gtk_container_add(GTK_CONTAINER(event_box), label);
gtk_widget_show_all(window);
gtk_main();
return 0;
gchar *
_(gchar *string)
return(g_locale_to_utf8(string, -1, NULL, NULL, NULL));
显示效果如下:
这里再转载一下GTKSCORLLEDWINDOW背景修改的方法:
直接通过下面的方式是无法改变GtkScrolledWindow背景色的:
1. GdkColor white;
2. gdk_color_parse ("WHITE", &white);
3. gtk_widget_modify_bg (scrolledWindow, GTK_STATE_NORMAL, &white);
必须连GTKVIEWPORT的背景也同时改变:
1. const char scroll_style[] =
2. "style \"view-scroll\" {"
3. " bg[NORMAL] = \"#FFFFFF\""
4. "}"
5. "class \"GtkViewport\" style \"view-scroll\""
6. "class \"GtkScrolledWindow\" style \"view-scroll\"";
7. gtk_rc_parse_string (scroll_style);
本文转自:http://blog.chinaunix.net/space.php?uid=152999&do=blog&id=113783
设置Gtk Label的背景颜色和字体颜色 GtkLabel是少数的几个不创建自己的窗口的GTK+控件之一.相反,它直接的将自己画在父控件上.这就是说:如果你想为GtkLabel控件设置背景,你需要改变它的父控件的的背景.这是GTK+ FAQ 中"6.10. 如何给GtkLabel控件设置背景颜色?"给出的解释。一般情况下设置某个GtkWidget的背景都用一般情况下用函数 gtk_w
http://blog.chinaunix.net/u1/42612/showart_1925711.html
Gtk
Label
是少数的几个不创建自己的窗口的
GTK
+控件之一.相反,它直接的将自己画在父控件上.这就是说:如果你想为
Gtk
Label
控件
设置
背景,你需要改变它的父控件的的背景.
这是
GTK
+ FAQ 中"6.10.
如何给
Gtk
Label
控件
设置
背景颜色
?"给出的解释。一
namespace
gtk
not available 是一种可能出现在程序运行失败时的错误信息。该错误信息提示程序无法找到或使用
gtk
库,常见于使用 python 程序编写的图形用户界面(GUI)应用程序中。
gtk
是一种用于创建 GUI 程序的开源库,因此如果在程序运行中无法找到该库,就会影响程序的正常运行。
造成该错误的原因可以有很多种,常见的原因包括:
1. 没有正确安装
gtk
库:如果没有安装
gtk
库或者库的版本过低,就会出现该错误信息。
2. 没有正确
设置
环境变量:如果
gtk
库的安装路径没有被
设置
到环境变量中,程序就无法找到该库。
3. 操作系统版本与
gtk
库不兼容:如果操作系统版本与
gtk
库版本不兼容,也会出现该错误信息。
对于不同的原因,解决的方法也不同。比如,如果是因为没有正确安装
gtk
库,就需要重新安装一个新版本的
gtk
库;如果是因为没有正确
设置
环境变量,可以手动将
gtk
库的路径添加到系统环境变量中。
总之,出现 namespace
gtk
not available 的错误信息,一定要仔细分析错误的原因,并及时采取相应的措施解决问题,才能让程序正常运行。