Man*_*nny 5 c python gtk gdk pygobject
我想检测用户何时完成重新调整大小或移动 GTK 窗口。基本上相当于Windows 中的WM_EXITSIZEMOVE。
我已经查看了GTK 检测用户窗口调整大小,并且能够使用配置事件检测大小/位置更改;但是,由于我的其他代码是架构师,我想知道调整大小何时完成。几乎就像 ValueChanged 而不是 ValueChanging 事件。
我在想是否我能找出鼠标按钮是否被释放,然后尝试检测它是否是我得到的最后一个事件。但是对于 window 对象也找不到办法做到这一点。
小智 2
您可以使用超时函数,调整大小完成后就会调用该函数。超时以毫秒为单位,您可能需要使用该值来在调用 resize_done 的延迟和在调整大小真正完成之前触发它之间取得平衡。
#define TIMEOUT 250
gboolean resize_done (gpointer data)
{
  guint *id = data;
  *id = 0;
  /* call your existing code here */
  return FALSE;
}
gboolean on_configure_event (GtkWidget *window, GdkEvent *event, gpointer data)
{
  static guint id = 0;
  if (id)
    g_source_remove (id);
  id = g_timeout_add (TIMEOUT, resize_done, &id);
  return FALSE;
}
| 归档时间: | 
 | 
| 查看次数: | 2176 次 | 
| 最近记录: |