如何强制窗口保持GTK +中的特定比例?

时间:2013-02-21 18:33:29

标签: python gtk

我有一个GtkWindow我想要调整大小,但是它的比例受到限制。实现这一目标的最简单方法是什么?我应该在每个configure-event上手动调整大小,还是有更简单的方法呢?

我的窗口小部件层次结构如下:

GtkWindow
  GtkBox
    GtkToolbar
    GtkBox
      GtkAspectFrame

从我得到的答案中,我尝试了类似的东西:

    gh = Gdk.Geometry()
    gh.min_aspect = 0.5
    gh.max_axpect = 0.5
    w.set_geometry_hints(None, gh, Gdk.WindowHints.ASPECT)

但是,我仍然可以用我想要的任何方面调整窗口大小。我错过了什么?

3 个答案:

答案 0 :(得分:1)

使用gtk_window_set_geometry_hints()。您需要使用GdkGeometry结构中的min_aspect和max_aspect字段。

答案 1 :(得分:1)

正如另一个答案所示,您可以使用gtk_window_set_geometry_hints()。文档说:

  

此函数设置有关如何由用户调整窗口大小的提示。您可以设置最小和最大尺寸;允许调整大小   增量(例如对于xterm,您只能按大小调整大小   字符); 宽高比;等等。

该函数的原型如下:

void gtk_window_set_geometry_hints (GtkWindow *window,
                                    GtkWidget *geometry_widget,
                                    GdkGeometry *geometry,
                                    GdkWindowHints geom_mask);

您可以使用GdkGeometry数据指定最小和最大宽度和高度 type是具有以下字段的结构:

struct GdkGeometry {
  gint min_width;
  gint min_height;
  gint max_width;
  gint max_height;
  gint base_width;
  gint base_height;
  gint width_inc;
  gint height_inc;
  gdouble min_aspect;
  gdouble max_aspect;
  GdkGravity win_gravity;
};

答案 2 :(得分:0)

您需要将max_axpect更改为max_aspect

这应该有所帮助。