You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GTK4如何替代gtk_window_move将窗口定位到鼠标所在坐标?

GTK4 替代 gtk_window_move 的方案

GTK4 确实移除了 gtk_window_move() 函数,要实现将窗口定位到指定坐标(比如鼠标光标所在位置),需要通过操作窗口的底层 GdkSurface 来完成,具体步骤和示例如下:

核心思路

GtkWindow 在 GTK4 中继承自 GtkNative,我们可以通过 GtkNative 获取窗口对应的 GdkSurface,再调用 gdk_surface_move() 完成坐标定位——这个函数的语义和旧的 gtk_window_move() 完全一致,都是接收全局屏幕坐标。

示例代码

C 语言

// 假设 window 是你的 GtkWindow 实例
GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(window));
// 确保窗口已初始化完成,surface 不为 NULL
if (surface != NULL) {
    // target_x 和 target_y 是你要定位的目标坐标
    gdk_surface_move(surface, target_x, target_y);
}

Python(PyGObject)

# 假设 window 是你的 Gtk.Window 实例
surface = window.get_surface()
if surface is not None:
    # target_x 和 target_y 为目标坐标
    surface.move(target_x, target_y)

注意事项

  • 必须在窗口**完成初始化(realized)**后调用上述代码,否则获取到的 surface 会是 NULL。如果不确定时机,可以给窗口绑定 realize 信号,在信号回调中执行移动操作。
  • 传入的 x、y 坐标是相对于屏幕左上角的全局坐标,和 GTK3 中 gtk_window_move() 的坐标规则一致。

内容的提问来源于stack exchange,提问作者René Rigault

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:40:05