在GTK中,是否有一种简单的方法可以按任意数量缩放所有小部件?

时间:2009-08-12 23:25:54

标签: python user-interface gtk pygtk

我希望我的小部件看起来与现在完全一样,除了要小一点。它包括按钮,标签,文本,图像等。有没有什么方法可以说“将其缩放到一半大小”,并让GTK完成所有图像处理,小部件大小调整等等?如果没有,最简单的方法是什么?

4 个答案:

答案 0 :(得分:2)

从用户界面更改主题不是我推荐的,但你可以在需要时使用它,使用自定义gtkrc可以帮助你改变字体和按钮的绘制方式,主要是因为xthickness和ythickness。

 import gtk
 file = "/path/to/the/gtkrc"
 gtk.rc_parse(file)
 gtk.rc_add_default_file(file)
 gtk.rc_reparse_all()

自定义gtkrc可能如下所示:

gtk_color_scheme = "fg_color:#ECE9E9;bg_color:#ECE9E9;base_color:#FFFFFF;text_color:#000000;selected_bg_color:#008DD7;selected_fg_color:#FFFFFF;tooltip_bg_color:#000000;tooltip_fg_color:#F5F5B5"
style "theme-fixes" {

  fg[NORMAL]        = @fg_color
  fg[PRELIGHT]      = @fg_color
  fg[SELECTED]      = @selected_fg_color
  fg[ACTIVE]        = @fg_color
  fg[INSENSITIVE]   = darker (@bg_color)

  bg[NORMAL]        = @bg_color
  bg[PRELIGHT]      = shade (1.02, @bg_color)
  bg[SELECTED]      = @selected_bg_color
  bg[INSENSITIVE]   = @bg_color
  bg[ACTIVE]        = shade (0.9, @bg_color)

  base[NORMAL]      = @base_color
  base[PRELIGHT]    = shade (0.95, @bg_color)
  base[ACTIVE]      = shade (0.9, @selected_bg_color)
  base[SELECTED]    = @selected_bg_color
  base[INSENSITIVE] = @bg_color

  text[NORMAL]      = @text_color
  text[PRELIGHT]    = @text_color
  text[ACTIVE]      = @selected_fg_color
  text[SELECTED]    = @selected_fg_color
  text[INSENSITIVE] = darker (@bg_color)

  GtkTreeView::odd_row_color  = shade (0.929458256, @base_color)
  GtkTreeView::even_row_color = @base_color
  GtkTreeView::horizontal-separator = 12

      font_name = "Helvetica World 7"
 }
 class "*" style "theme-fixes"

答案 1 :(得分:2)

某些gtk开发人员已经开始使用分辨率独立性,这里有一个非常大的补丁更新,可以将它引入GTK。这个补丁现在已经有一年的历史了,目前还不清楚它是如何/何时/是否包括在内:(最后的截图)

http://mail.gnome.org/archives/gtk-devel-list/2008-August/msg00044.html

答案 2 :(得分:1)

没有内置方法可以做到这一点。要做到这一点,你必须考虑你的ui中的“占用空间”,以及如何减少它。

如果您的用户界面主要是文字和图片,则可以使用较小的字体大小,然后按适当的百分比缩小所有图片。一旦它们显示的文本和图像缩小,小部件大小调整将自动缩小(除非您已经完成了诸如硬编码高度/宽度之类的坏事,使用GtkFixed等)。

棘手的部分是确定字体磅值和图像比例之间的关系。

编辑:

Here's a post about the pygtk syntax to change the font size

答案 3 :(得分:1)

编写了一个100%可扩展的gtk应用程序后,我所做的就是将自己限制在gdk_draw_line和gdk_draw_rectangle之间,这很容易扩展自己。文字是通过gdk_draw_line“完成”的。 (对于某些低值“完成”。)请参阅:http://wordwarvi.sourceforge.net

不是它对你有帮助,我猜。