加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何在Windows下将链接拖动到PyGTK应用程序?

发布时间:2020-12-20 13:26:57 所属栏目:Python 来源:网络整理
导读:Evernote客户端有一个很好的功能,允许从Firefox拖动链接到Evernote编辑窗口,该窗口适用于浏览器窗口中的书签和链接.我想为PyGTK应用程序添加类似的功能.这是我到目前为止所尝试的(使用Py 2.7.2和PyGTK 2.24.0): import pygtkpygtk.require('2.0')import gtk
Evernote客户端有一个很好的功能,允许从Firefox拖动链接到Evernote编辑窗口,该窗口适用于浏览器窗口中的书签和链接.我想为PyGTK应用程序添加类似的功能.这是我到目前为止所尝试的(使用Py 2.7.2和PyGTK 2.24.0):

import pygtk
pygtk.require('2.0')
import gtk,pango

flags = gtk.TARGET_OTHER_APP
targets = [
    ('text/uri-list',flags,0),('text/plain',1),('text/x-uri',2),('text/x-moz-url',3),('application/x-bookmark',4),('application/x-mswinurl',5),('application/x-desktop',6)]

def receive_data(wid,context,x,y,data,info,time):
    type = data.type
    url = data.data
    if info == 2:
        url = url.decode('utf-16')
    url = url.splitlines()[0]
    text = '%sn%s' % (type,url)
    label.set_text(text)
    context.finish(True,False,time)

window = gtk.Window()
window.set_size_request(400,80)

label = gtk.Label()
label.set_justify(gtk.JUSTIFY_CENTER)
label.set_ellipsize(pango.ELLIPSIZE_END)
window.add(label)

window.drag_dest_set(gtk.DEST_DEFAULT_ALL,targets,gtk.gdk.ACTION_COPY|gtk.gdk.ACTION_MOVE)

window.connect('drag_data_received',receive_data)
window.connect('destroy',lambda window: gtk.main_quit())

window.show_all()
gtk.main()

这在Linux下运行良好:您可以将链接或书签从Firefox拖放到GTK窗口,它会显示拖动的URL.不幸的是,它在Windows下无法运行.我已经使用Windows 7进行了测试.这里,上述应用程序只接受文件链接,但不接受来自Firefox或其他Web浏览器的Internet链接.它也可以在Windows下运行吗?

解决方法

除了从Windows资源管理器拖动到GTK应用程序之外,我从未在Windows中看到应用程序间GTK DnD工作.您可以使用PyGTK教程中的 drag targets demo进行测试. (即使从资源管理器拖动也有一些奇怪的怪癖,例如不会触发拖动动作.)

我认为这只是非常错误或没有实施.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读