PyGTK - Sürükle ve Bırak

İlişkili X Penceresine sahip widget'lar sürükleyip bırakabilir. Programda, önce sürükle ve bırak için kaynak ve / veya hedef olarak bir pencere öğesi belirlenmelidir. Kaynak olarak tanımlanan widget, sürüklenen verileri gönderebilir. Hedef widget, sürüklenen veriler üzerine bırakıldığında bunu kabul eder.

Aşağıdaki adımlar, sürükle ve bırak özellikli bir uygulamanın kurulmasıyla ilgilidir -

Step 1 - Bir kaynak widget oluşturma.

Step 2 - drag_source_set () yöntemi, bir sürükleme işlemi için hedef türlerini belirtir -

widget.drag_source_set(start_button_mask, targets, info)

Step 3 - start_button_mask argümanı, sürükleme işlemini başlatan düğmelerden oluşan bir bit maskesini belirtir.

Step 4 - Hedef argüman, bu yapının demetlerinin bir listesidir -

(target, flags, info)

Hedef bağımsız değişken, sürükleme türünü temsil eden bir dizedir, örneğin metin / düz veya resim / x-xpixmap.

Step 6 - Aşağıdaki bayraklar önceden tanımlanmıştır -

  • gtk.TARGET_SAME_APP
  • gtk.TARGET_SAME_WIDGET

Step 7 - Bayrak 0 olarak ayarlandığından herhangi bir sınırlama olmayacaktır.

Widget'ın kaynak görevi görmesi gerekmiyorsa, ayarlanmamış olabilir -

widget.drag_source_unset()

Kaynak sinyali sinyal yayar. Aşağıdaki tablo sinyalleri ve geri aramalarını listeler.

drag_begin def drag_begin_cb (widget, drag_context, data):
drag_data_get def drag_data_get_cb (widget, drag_context, selection_data, bilgi, zaman, veri):
drag_data_delete def drag_data_delete_cb (widget, drag_context, data):
drag_end def drag_end_cb (widget, drag_context, data):

Hedef Widget'ı Ayarlama

Drag_dest_set () yöntemi, hangi parçacığın sürüklenen verileri alabileceğini belirtir.

widget.drag_dest_set(flags, targets, action)

Bayraklar parametresi aşağıdaki sabitlerden birini alabilir -

gtk.DEST_DEFAULT_MOTION Bu, sürüklemenin bu widget'ın olası hedefler ve eylemler listesiyle eşleşip eşleşmediğini kontrol eder ve ardından uygun şekilde drag_status () işlevini çağırır.
gtk.DEST_DEFAULT_HIGHLIGHT Bu, sürükleme bu widget'ın üzerinde olduğu sürece bu widget'a bir vurgu çizer
gtk.DEST_DEFAULT_DROP Bir bırakma gerçekleştiğinde, sürükleme bu widget'ın olası hedefler ve eylemler listesiyle eşleşirse drag_get_data()widget adına. Bırakma başarılı olsun veya olmasın, arayındrag_finish(). Eylem bir hareket ise ve sürükleme başarılıysa, silme parametresi için DOĞRU geçilecektir.drag_finish().
gtk.DEST_DEFAULT_ALL Ayarlanırsa, tüm varsayılan eylemlerin gerçekleştirilmesi gerektiğini belirtir.

Hedef, hedef bilgileri içeren dizilerin bir listesidir. Eylemler bağımsız değişkeni, aşağıdaki değerlerin bir veya daha fazlasının bit maskesi veya kombinasyonudur:

  • gtk.gdk.ACTION_DEFAULT
  • gtk.gdk.ACTION_COPY
  • gtk.gdk.ACTION_MOVE
  • gtk.gdk.ACTION_LINK
  • gtk.gdk.ACTION_PRIVATE
  • gtk.gdk.ACTION_ASK

"Sürükleme hareketi" işleyicisi, hedef hedefleri ile eşleştirerek sürükleme verilerinin uygun olup olmadığını belirlemelidir. gtk.gdk.DragContext hedefler ve isteğe bağlı olarak sürükleme verilerini inceleyerek drag_get_data()yöntem. gtk.gdk.DragContext. drag_status() yöntemi güncellemek için çağrılmalıdır drag_context durum.

"Sürükle bırak" işleyicisi, eşleşen hedefi kullanarak drag_dest_find_target() yöntemini kullanın ve ardından sürükleme verilerini isteyin. drag_get_data()yöntem. Veriler, "verileri sürükleyerek alınan" işleyicide mevcut olacaktır.