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()を使用します。GdkGeometry構造体のmin_aspectフィールドとmax_aspectフィールドを使用する必要があります。

于 2013-02-26T01:04:14.647 に答える
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 に答える