Je crée une petite application doit être en mesure de recevoir des URL. Si la fenêtre des applications est ouverte, je devrais pouvoir faire glisser un lien depuis un navigateur et le déposer dans l'application - et l'application enregistrera l'URL dans une base de données. Je crée ceci en Python/GTk. Mais je suis un peu confus au sujet de la fonctionnalité glisser-déposer. Alors, comment le faire?Python GTK glisser et déposer - Obtenir l'URL
Quelques exemples de code pour mettre en œuvre glisser/déposer (mon application utilise un peu de ce code) ...
import pygtk
pygtk.require('2.0')
import gtk
# function to print out the mime type of the drop item
def drop_cb(wid, context, x, y, time):
l.set_text('\n'.join([str(t) for t in context.targets]))
# What should I put here to get the URL of the link?
context.finish(True, False, time)
return True
# Create a GTK window and Label, and hook up
# drag n drop signal handlers to the window
w = gtk.Window()
w.set_size_request(200, 150)
w.drag_dest_set(0, [], 0)
w.connect('drag_drop', drop_cb)
w.connect('destroy', lambda w: gtk.main_quit())
l = gtk.Label()
w.add(l)
w.show_all()
# Start the program
gtk.main()
Attention à ce que vous pourriez avoir à appelez data.get_uris() si les données sont sous la forme d'une liste d'uri. Ainsi, par exemple, si vous étiez en train de DnD une liste de fichiers de konqueror/nautilus à la fenêtre et que vous acceptez 'text/uri-list', get_data() sur GtkSelectionData retournera None. –
Il peut y avoir un comportement indésirable si nous traînons sur la fenêtre et faites glisser la fenêtre de la fenêtre sans relâcher la souris de l'étiquette en conservant le texte. Effacer l'étiquette semble avoir plus de sens – demongolem