【问题标题】:pygobject creating a drag and drop sourcepygobject 创建拖放源
【发布时间】:2011-10-09 23:42:24
【问题描述】:
from gi.repository import Gtk, Gdk

def drag_data_get_cb(widget, drag_context, selection_data, info, time):
    print selection_data.get_data_type()
    print widget.get_text()
    return widget.get_text()

def drag_begin_cb(widget, dragcontext):
    print dragcontext, widget
    return dragcontext

label = Gtk.Label()
label.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, [], Gdk.DragAction.COPY)
label.set_text("Drag Me!")
label.connect("drag_data_get", drag_data_get_cb)
label.connect("drag_begin", drag_begin_cb)

window = Gtk.Window()
window.add(label)
window.connect("delete_event", Gtk.main_quit)
window.set_default_size(300, 250)
window.show_all()

Gtk.main()

这几天我一直在用头撞墙, 谁能告诉我为什么这不允许我将文本拖到其他小部件中?两个拖动事件都不会触发

【问题讨论】:

    标签: python pygobject gtk3


    【解决方案1】:

    在这个tutorial 中说你不能使用没有窗口的小部件,例如Gtk.Label 作为拖放源。例如,您可以用按钮替换标签:

    label = Gtk.Button.new_with_label("Drag Me!")
    

    为了让这个例子能够工作。

    【讨论】:

    • 啊好吧,我只是假设因为拖动事件都是从 gtkwidget 继承的,所以我可以在标签上使用它们
    • 我确实发现的一件事是,在 gobject 下你似乎需要调用 'code' label.drag_source_add_uri_targets() label.drag_source_add_text_targets() 'code' 不像 pygtk
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    相关资源
    最近更新 更多