更改gtk.Paned控件的手柄大小
gtk.Paned 这个东西里面有一个叫做 'handle-size' 的样式属性,我猜这个属性是用来改变手柄大小的,但它是只读的,那我该怎么改变它呢?(在 PyGtk 中)
3 个回答
0
顺便说一下:handle-size在GTK 3.20版本中已经不再使用了。
你可以通过CSS
来改变手柄的大小:
paned separator{
background-size:40px;
min-height: 40px;
}
C语言代码
我不能提供Python代码,但为了参考,我会贴上C语言的代码。
void
_paned_change_handle_size(GtkWidget *widget)
{
GtkStyleContext * context = gtk_widget_get_style_context (widget);
GtkCssProvider * css = gtk_css_provider_new ();
gtk_css_provider_load_from_data (css,
"paned separator{"
"background-size:40px;"
"min-height: 40px;"
"}",
-1,NULL);
gtk_style_context_add_provider (context, GTK_STYLE_PROVIDER(css),
GTK_STYLE_PROVIDER_PRIORITY_USER);
}
2
在你启动自己的应用程序之前,可以先加载一个自定义的资源文件。在C语言中(希望翻译成Python也很简单),可以这样做:
#include <gtk/gtk.h>
int
main(gint argc, gchar **argv)
{
GtkWidget *window;
GtkPaned *paned;
gtk_init(&argc, &argv);
gtk_rc_parse_string("style 'my_style' {\n"
" GtkPaned::handle-size = 200\n"
" }\n"
"widget '*' style 'my_style'");
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
paned = (GtkPaned *) gtk_hpaned_new();
gtk_paned_add1(paned, gtk_label_new("left"));
gtk_paned_add2(paned, gtk_label_new("right"));
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(paned));
gtk_widget_show_all(window);
gtk_main();
return 0;
}
3
根据gtk.Widget
的文档:
gtk.Widget
引入了样式属性——这些属性其实是对象的特性,但它们并不是直接存储在对象上,而是存储在与这个小部件关联的样式对象中。样式属性是在资源文件中设置的。这个机制用于配置一些东西,比如滚动条箭头的位置,这样主题的设计者就能更好地控制应用程序的外观,而不需要用C语言编写主题引擎。
在GTK中,一般的做法是不要在你的程序中设置样式属性,而是使用标准的用户界面小部件,让用户自己决定它们的外观(通过桌面主题来实现)。