0

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

4

4 回答 4

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"
于 2009-08-16T05:12:15.407 回答
2

一些 gtk 开发人员已经对分辨率独立性进行了研究,这里有一个更新,其中包含一个非常大的补丁,可以将其引入 GTK。然而,该补丁现在已经有一年了,目前还不清楚如何/何时/是否会包含它:(最后的截图)

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

于 2009-08-20T23:49:45.443 回答
1

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

如果您的 UI 主要是文本和图像,则可以使用较小的字体大小,然后将所有图像缩小适当的百分比。一旦它们显示的文本和图像缩小,小部件的大小就会自动缩小(除非你做了像硬编码高度/宽度这样的坏事,使用 GtkFixed 等)。

棘手的部分将是确定字体点大小和图像比例之间的关系。

编辑:

这是一篇关于更改字体大小的 pygtk 语法的帖子

于 2009-08-12T23:29:55.493 回答
1

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

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

于 2009-08-16T05:24:10.103 回答