【发布时间】:2009-08-12 23:25:54
【问题描述】:
我希望我的小部件看起来与现在完全一样,只是更小。它包括按钮、标签、文本、图像等。有什么方法可以说“将其缩放到一半大小”,并让 GTK 进行所有必要的图像处理、小部件调整大小等吗?如果没有,最简单的方法是什么?
【问题讨论】:
标签: python user-interface gtk pygtk
我希望我的小部件看起来与现在完全一样,只是更小。它包括按钮、标签、文本、图像等。有什么方法可以说“将其缩放到一半大小”,并让 GTK 进行所有必要的图像处理、小部件调整大小等吗?如果没有,最简单的方法是什么?
【问题讨论】:
标签: python user-interface gtk pygtk
一些 gtk 开发人员已经致力于解决独立性问题,这里有一个更新,其中包含一个非常大的补丁,将其引入 GTK。然而,这个补丁现在已经有一年了,目前还不清楚如何/何时/是否会包含它:(最后的截图)
http://mail.gnome.org/archives/gtk-devel-list/2008-August/msg00044.html
【讨论】:
我不建议从用户界面更改主题,但如果需要,您可以这样做,使用自定义 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"
【讨论】:
没有内置的方法可以做到这一点。为此,您必须考虑 ui 中的“占用空间”是什么,以及如何减少它。
如果您的 UI 主要是文本和图像,您可以使用较小的字体大小,然后按适当的百分比缩小所有图像。一旦它们显示的文本和图像缩小,小部件的大小就会自动缩小(除非你做了一些坏事,比如硬编码高度/宽度,使用 GtkFixed 等)。
棘手的部分是确定字体点大小和图像比例之间的关系。
编辑:
Here's a post about the pygtk syntax to change the font size.
【讨论】:
在编写了一个 100% 可扩展的 gtk 应用程序之后,我所做的只是将自己限制在 gdk_draw_line 和 gdk_draw_rectangle 中,然后自己很容易扩展。文本通过 gdk_draw_line “完成”。 (对于“完成”的某些低值。)请参阅:http://wordwarvi.sourceforge.net
我猜这对你没有任何帮助。
【讨论】: