Есть виджет gtk.TreeView, он объявлен как источник drag:
target = [
('STRING', 0, TARGET_STRING),
('text/plain', 0, TARGET_STRING),
('application/x-rootwin-drop', 0, TARGET_ROOTWIN)
]
... [skip] (тут объявлен некий класс)
self.treeview.drag_source_set( gtk.gdk.BUTTON1_MASK | gtk.gdk.BUTTON3_MASK,
target,
gtk.gdk.ACTION_COPY)
self.treeview.connect('drag-data-get', self.treeview_drag_data_get)
... [skip]
def treeview_drag_data_get(self, widget, context, data, info, timestamp):
s = u'ня!'
data.set_text(s, -1)
data.get_text() так же возвращает строку из 13(!) символов u'\u043d\u044f!'.
Попытка решить проблему через data.set(gtk.gdk.TARGET_STRING, 16, s) даёт результат в виде строки в utf-8 воспринятой как latin1: 'нÑ!'
Можно ли в pygtk перетаскивать в другие приложения кириллический текст?
Обращаю внимание на то, что подразумеваеется реализация своего DnD, а не то, что сделано в, например, gtk.Entry --- там DnD реализовано внутри библиотеки.