GTK3:gtk_window_resize() 与 gtk_widget_set_size_request()

Posted

技术标签:

【中文标题】GTK3:gtk_window_resize() 与 gtk_widget_set_size_request()【英文标题】:GTK3 : gtk_window_resize() vs gtk_widget_set_size_request() 【发布时间】:2019-07-19 00:46:50 【问题描述】:

我正在尝试设置 GtkWindow 的 [初始] 大小,但除了 gtk_widget_set_size_request() 函数之外没有任何作用。

GtkWindow* pw = …;

这不起作用,它得到了一些奇怪的大小:

gtk_window_resize(pw,800,600);

这也不起作用:

gtk_window_set_default_size(pw,800,600); 

只有这个

gtk_widget_set_size_request(GTK_WIDGET(pw),800,600);

以某种方式工作 - 窗口将以接近 800x600 的尺寸显示。但问题是该函数有副作用:调用它后,用户无法将窗口调整为小于该大小 - 它设置了窗口的最小约束。

知道如何在 GTK 中定义窗口的初始/默认大小吗?

【问题讨论】:

来自 gtk.css 文件? 你确认你的窗口创建成功了吗? gtk_window_set_default_size () 应该可以正常工作。现在您列出了pygtk 标记,因此如果您正在使用该标记,则需要仔细检查该文档。如果我记得的话,有一种说法是 gtk_widget_set_size_request 将成为首选方法,但我没有那个方便的链接,或者当推送是为了它的使用时。 我不知道这是否重要,但我通常会使用GtkWidget *pw = ... 然后gtk_window_set_default_size (GTK_WINDOW (pw), ... @DavidC.Rankin 窗口已成功创建为gtk_widget_set_size_request() 在同一位置工作。如果用gtk_window_set_default_size() 替换它 - 它不起作用。然而gtk_window_move_resize() - 也不起作用。我迷失在移动/调整 GTK 函数的动物园中...... 我想也许你想要的是 gtk_window_set_geometry_hints()。 【参考方案1】:

GTK 在设置窗口和小部件的大小方面有自己的理念。 您应该在设置默认大小之前设置几何提示。

gtk_window_set_default_size(pw,800,600); 

这些提示可能是:

GdkGeometry hints;
hints.min_width = 800;
hints.max_width = 800;
hints.min_height = 600;
hints.max_height = 600;
gtk_window_set_geometry_hints( pw, GTK_WIDGET(pw), &hints, (GdkWindowHints)(GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE));
gtk_window_set_default_size (pw, 800, 600);

【讨论】:

以上是关于GTK3:gtk_window_resize() 与 gtk_widget_set_size_request()的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 下 GTK3 安装与编译

Perl/Gtk3,给窗口添加背景图片

Gtk3和开罗动画抽搐

如何在 GTK3 中禁用按钮

GTK3 / Glib 重复一个函数

将 cairo 与 gtk3 一起使用