PyGTK - Seret dan Jatuhkan
Widget yang memiliki X Window terkait dapat melakukan drag and drop. Dalam program ini, widget sebagai sumber dan / atau tujuan untuk drag-and-drop harus ditetapkan terlebih dahulu. Widget yang ditetapkan sebagai sumber dapat mengirimkan data yang ditarik. Widget tujuan menerimanya saat data yang diseret dijatuhkan di atasnya.
Langkah-langkah berikut ini terlibat dalam menyiapkan aplikasi yang mendukung seret dan lepas -
Step 1 - Menyiapkan widget sumber.
Step 2 - Metode drag_source_set () menentukan jenis target untuk operasi seret -
widget.drag_source_set(start_button_mask, targets, info)
Step 3 - Argumen start_button_mask menentukan bitmask tombol yang memulai operasi seret.
Step 4 - Argumen target adalah daftar tupel dari struktur ini -
(target, flags, info)
Argumen target adalah string yang mewakili jenis seret, misalnya, teks / biasa atau gambar / x-xpixmap.
Step 6 - Bendera berikut ditentukan sebelumnya -
- gtk.TARGET_SAME_APP
- gtk.TARGET_SAME_WIDGET
Step 7 - Tidak akan ada batasan karena bendera disetel ke 0.
Jika widget tidak diperlukan untuk bertindak sebagai sumber, itu bisa tidak disetel -
widget.drag_source_unset()
Sinyal sumber memancarkan sinyal. Tabel berikut mencantumkan sinyal dan callbacknya.
drag_begin | def drag_begin_cb (widget, drag_context, data): |
drag_data_get | def drag_data_get_cb (widget, drag_context, selection_data, info, waktu, data): |
drag_data_delete | def drag_data_delete_cb (widget, drag_context, data): |
drag_end | def drag_end_cb (widget, drag_context, data): |
Menyiapkan Widget Tujuan
Metode drag_dest_set () menentukan widget mana yang dapat menerima data yang diseret.
widget.drag_dest_set(flags, targets, action)
Parameter flags dapat mengambil salah satu dari konstanta berikut -
gtk.DEST_DEFAULT_MOTION | Ini memeriksa apakah seret cocok dengan daftar kemungkinan target dan tindakan widget ini, lalu memanggil drag_status () yang sesuai. |
gtk.DEST_DEFAULT_HIGHLIGHT | Ini menarik sorotan pada widget ini selama drag di widget ini |
gtk.DEST_DEFAULT_DROP | Saat penurunan terjadi, jika tarik cocok dengan daftar target yang mungkin dan panggilan tindakan dari widget ini drag_get_data()atas nama widget. Apakah drop berhasil atau tidak, hubungidrag_finish(). Jika tindakannya adalah pindah dan drag berhasil, maka TRUE akan diteruskan untuk parameter delete kedrag_finish(). |
gtk.DEST_DEFAULT_ALL | Jika disetel, tentukan bahwa semua tindakan default harus diambil. |
Targetnya adalah daftar tupel yang berisi informasi target. Argumen tindakan adalah topeng bit atau kombinasi dari satu atau beberapa nilai berikut -
- gtk.gdk.ACTION_DEFAULT
- gtk.gdk.ACTION_COPY
- gtk.gdk.ACTION_MOVE
- gtk.gdk.ACTION_LINK
- gtk.gdk.ACTION_PRIVATE
- gtk.gdk.ACTION_ASK
Penangan "gerakan tarik" harus menentukan apakah data tarik sesuai dengan mencocokkan target tujuan dengan gtk.gdk.DragContext target dan secara opsional dengan memeriksa data tarik dengan memanggil drag_get_data()metode. Itugtk.gdk.DragContext. drag_status() harus dipanggil untuk memperbarui drag_context status.
Penangan "seret-lepas" harus menentukan target yang cocok menggunakan drag_dest_find_target() metode dan kemudian meminta data seret menggunakan drag_get_data()metode. Data akan tersedia di penangan "seret-data-diterima".