7

我创建了一个新窗口并想将其移动到屏幕的中心,我应该怎么做?我在下面尝试过

gtk_widget_hide (GTK_WIDGET (window));
gtk_window_set_position (window, GTK_WIN_POS_CENTER);
gtk_widget_show_all (GTK_WIDGET (window));

但似乎 gtk_window_set_position (window, GTK_WIN_POS_CENTER)只触发一次。是不是我做错了什么?

4

4 回答 4

15

你必须使用gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS) :)

于 2016-02-02T02:42:03.707 回答
6

要告诉您的应用程序定位在中心,以下应该有效。但是我不熟悉你提到的功能,也许它和这种方式一样好。您可以使用 gtk_window_move() 移动窗口,默认情况下坐标是从左上角默认计算的,但是可以通过以下方式更改:

void gtk_window_set_gravity (GtkWindow *window,
                             GdkGravity gravity);

可用的枚举如下:

GDK_GRAVITY_NORTH_WEST, GDK_GRAVITY_NORTH, GDK_GRAVITY_NORTH_EAST,
GDK_GRAVITY_WEST,GDK_GRAVITY_CENTER, GDK_GRAVITY_EAST, 
GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_SOUTH, GDK_GRAVITY_SOUTH_EAST, 
and GDK_GRAVITY_STATIC.

然后使用

void gtk_window_move (GtkWindow *window,
                      gint x,
                      gint y);

不确定它是否会改变初始窗口位置,这取决于 Windowmanager 是否遵守,正如 gtk 手册告诉读者的那样,大多数窗口管理器都会忽略初始窗口位置。

此链接将为您提供有关上述功能的大量信息https://developer.gnome.org/gtk3/3.5/GtkWindow.html#gtk-window-move

于 2013-07-31T08:07:42.457 回答
4

我知道这是一个带有“c”标签的问题,但如果有人寻找Python代码,这里是:

如果 win 是您的主窗口

win.set_position(Gtk.WindowPosition.CENTER_ALWAYS)

于 2020-05-16T17:54:01.937 回答
0

要添加另一个Python答案,您也可以使用,

Gtk.WindowPosition.CENTER_ALWAYS

当您创建 Gtk.Window 的实例时:

win = Gtk.Window(title="Example Window", window_position=Gtk.WindowPosition.CENTER_ALWAYS)
于 2021-11-07T06:16:27.197 回答