为了账号安全,请及时绑定邮箱和手机立即绑定

取消 Gtk.TreeView 中某些特定项目的拖放

取消 Gtk.TreeView 中某些特定项目的拖放

慕田峪4524236 2021-05-30 15:10:32
我在Gtk.TreeView这里 大多数但不是所有的项目都应该能够拖放。在这个例子中,第一个项目应该不能被拖放,但它应该是可选择的。我怎么能意识到这一点?也许我必须使用drag-begin信号并停止在那里的拖动。但我不知道怎么做。#!/usr/bin/env python3import gigi.require_version('Gtk', '3.0')from gi.repository import Gtkfrom gi.repository import Gdkclass MainWindow(Gtk.Window):    def __init__(self):        Gtk.Window.__init__(self, title="TreeView Drag and Drop")        self.connect("delete-event", Gtk.main_quit)        self.set_default_size(400, 300)        # "model" with dummy data        self.store = Gtk.TreeStore(str)        self.store.append(None, ['do not drag this'])        self.store.append(None, ['drag this'])        self.view = Gtk.TreeView(model=self.store)        self.add(self.view)        # build columsn        colA = Gtk.TreeViewColumn('Col A', Gtk.CellRendererText(), text=0)        self.view.append_column(colA)        # DnD events        self.view.connect("drag-data-received", self.drag_data_received)        self.view.connect("drag-data-get", self.drag_data_get)        self.view.connect("drag-begin", self.drag_begin)        target_entry = Gtk.TargetEntry.new('text/plain', 2, 0)        self.view.enable_model_drag_source(                Gdk.ModifierType.BUTTON1_MASK,[target_entry],                 Gdk.DragAction.DEFAULT|Gdk.DragAction.MOVE        )        self.view.enable_model_drag_dest(                [target_entry],                Gdk.DragAction.DEFAULT|Gdk.DragAction.MOVE        )    def drag_data_get (self, treeview, drag_context, data, info, time):        model, path = treeview.get_selection().get_selected_rows()        print('dd-get\tpath: {}'.format(path))        data.set_text(str(path[0]), -1)    def drag_data_received (self, treeview, drag_context, x,y, data,info, time):        print('dd-received')        store = treeview.get_model()        source_iter = store.get_iter(data.get_text())        dest_path, drop_pos = self.view.get_dest_row_at_pos(x, y)        print('path: {} pos: {}'.format(dest_path, drop_pos))
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号