在pygtk for windows中拖放光标问题

在pygtk for windows中拖放光标问题,windows,pygtk,Windows,Pygtk,我正在linux下使用pygtk编写一个接口。在windows(XP)下尝试我的程序时,我遇到了一个非常微小的问题。这很可笑,但我有点着迷了,我周围的一些人说我应该找个人谈谈,所以我来了 我正在拖放一些包含图像的事件框。其想法是通过Pixbuf将拖动图标设置为EventBox中的图像。在Linux下,set_icon_pixbuf没有问题,工作非常好 在Windows XP下(不幸的是,我没有任何更新版本),当图标覆盖光标热点时,不再发生拖放。有什么解决办法吗?我在谷歌上没见过类似的东西,所以我

我正在linux下使用pygtk编写一个接口。在windows(XP)下尝试我的程序时,我遇到了一个非常微小的问题。这很可笑,但我有点着迷了,我周围的一些人说我应该找个人谈谈,所以我来了

我正在拖放一些包含图像的事件框。其想法是通过Pixbuf将拖动图标设置为EventBox中的图像。在Linux下,set_icon_pixbuf没有问题,工作非常好

在Windows XP下(不幸的是,我没有任何更新版本),当图标覆盖光标热点时,不再发生拖放。有什么解决办法吗?我在谷歌上没见过类似的东西,所以我在这里试试运气

如果有人想试试的话,我已经编写了一段代码片段来重现这种行为

import gtk

TARGET_TYPE_BT = 0
BUTTON = [('button', gtk.TARGET_SAME_APP, TARGET_TYPE_BT)]

def on_drag_begin(widget, context) :
    context.set_icon_pixbuf(pixbuf, size / 2, size / 2)

def on_drag_data_get(widget, context, selec, targ, time) :
    selec.set( selec.target, 8, widget.get_label())

def on_drag_data_received(widget, context, x, y, selec, targ, time) :
    widget.set_label(selec.data)

size = 48
pixbuf = gtk.gdk.Pixbuf( gtk.gdk.COLORSPACE_RGB, True, 8, size, size)
pixbuf.fill(0xff7777ff)
buttons = [gtk.Button('Spam'), gtk.Button('Spam, spam, egg and spam')]
hbox = gtk.HBox(True)
for button in buttons :
    button.connect('drag_begin', on_drag_begin)
    button.connect('drag_data_get', on_drag_data_get)
    button.connect('drag_data_received', on_drag_data_received)
    button.drag_source_set(gtk.gdk.BUTTON1_MASK, BUTTON, gtk.gdk.ACTION_MOVE)
    button.drag_dest_set(gtk.DEST_DEFAULT_ALL, BUTTON, gtk.gdk.ACTION_MOVE )
    hbox.pack_start(button)

win = gtk.Window(gtk.WINDOW_TOPLEVEL)
win.connect("destroy", lambda w: gtk.main_quit())
win.add(hbox)
win.show_all()
for button in buttons :
    button.window.set_cursor(gtk.gdk.Cursor( gtk.gdk.HAND1 ))
gtk.main()
在这段代码中,图标的大小似乎有着意想不到的相关性:试试24,一切正常


谢谢你的关注。欢迎任何建议。

如果是RGB而不是RGBA,为什么要使用0xFF77FF颜色?请改为尝试0xff7777…谢谢您的回答。我在创建pixbuf时传递的第二个参数实际上是has_alpha,并且设置为True,因为我的应用程序使用透明图像。我尝试了0xff7777,has_alpha设置为False,问题仍然存在。