1

我有一个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)

但是,我仍然可以根据需要调整窗口大小。我错过了什么?

4

3 回答 3

1

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

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

该函数的原型如下:

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

您将使用GdkGeometry数据类型指定最小和最大宽度和高度,该数据类型是具有以下指定字段的结构:

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;
};
于 2013-02-26T01:15:31.880 回答
1

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

于 2013-02-26T01:04:14.647 回答
1

您需要更改max_axpectmax_aspect.

那应该有帮助。

于 2018-05-03T15:07:10.327 回答