我是Gtk DnD的新手,我正试图让Gtk.Label成为拖拉源。
根据pygobject creating a drag and drop source
,它似乎不解决方法似乎是一个周围不可见的事件框GtkEventBox(感谢@jku)
但是医生说: “对于一个隐藏在子项下方的窗口的不可见事件框,有一个意外的问题。由于仅输入窗口不是事件框的后代窗口小部件创建的任何窗口的祖先窗口,因此这些窗口上的事件不会传播通过窗口系统,但只有GTK +。实际效果是,如果一个事件不在后代窗口的事件掩码中(参见gtk_widget_add_events()),它将不会被事件框接收。“
那么,我可以在我的标签上面有一个看不见的GtkEventBox 吗? 如果GtkEventBox位于下方,那么GtkLabel会捕获事件并将它们冒泡吗?
回答我:
使用GtkEventBox在GtkLabel周围工作没有任何问题。 并且包围的GtkLabel仍然接收DnD丢弃事件(有和没有“可见窗口”= False)。
因为它有效,我根本没玩过set_above_child。
答案 0 :(得分:1)
GtkEventBox旨在处理没有自己的GdkWindow的小部件的输入事件。将您的标签放在事件框中,并使用eventbox作为dnd源。
HBox无法正常工作,因为它也没有GdkWindow。