tkinter.dnd --- Hỗ trợ kéo và thả

Source code: Lib/tkinter/dnd.py


Ghi chú

Đây là bản thử nghiệm và sẽ không được dùng nữa khi nó được thay thế bằng Tk DND.

Mô-đun tkinter.dnd cung cấp hỗ trợ kéo và thả cho các đối tượng trong một ứng dụng, trong cùng một cửa sổ hoặc giữa các cửa sổ. Để cho phép kéo một đối tượng, bạn phải tạo một ràng buộc sự kiện cho đối tượng đó để bắt đầu quá trình kéo và thả. Thông thường, bạn liên kết sự kiện ButtonPress với hàm gọi lại mà bạn viết (xem Ràng buộc và sự kiện). Hàm sẽ gọi dnd_start(), trong đó 'nguồn' là đối tượng được kéo và 'sự kiện' là sự kiện gọi ra lệnh gọi (đối số cho hàm gọi lại của bạn).

Việc lựa chọn đối tượng mục tiêu diễn ra như sau:

  1. Tìm kiếm từ trên xuống khu vực dưới chuột cho tiện ích mục tiêu

  • Tiện ích mục tiêu phải có thuộc tính dnd_accept có thể gọi được

  • Nếu dnd_accept không xuất hiện hoặc trả về None, tìm kiếm sẽ chuyển sang tiện ích gốc

  • Nếu không tìm thấy tiện ích mục tiêu thì đối tượng mục tiêu là None

  1. Gọi tới <old_target>.dnd_leave(source, event)

  2. Gọi tới <new_target>.dnd_enter(source, event)

  3. Gọi tới <target>.dnd_commit(source, event) để thông báo rớt mạng

  4. Gọi tới <source>.dnd_end(target, event) để báo hiệu kết thúc thao tác kéo và thả

class tkinter.dnd.DndHandler(source, event)

Lớp DndHandler xử lý các sự kiện kéo và thả theo dõi các sự kiện Chuyển động và Phát hành nút trên thư mục gốc của tiện ích sự kiện.

cancel(event=None)

Hủy quá trình kéo và thả.

finish(event, commit=0)

Thực hiện kết thúc chức năng kéo và thả.

on_motion(event)

Kiểm tra khu vực bên dưới chuột để tìm đối tượng mục tiêu trong khi thực hiện thao tác kéo.

on_release(event)

Báo hiệu kết thúc quá trình kéo khi kiểu nhả được kích hoạt.

tkinter.dnd.dnd_start(source, event)

Chức năng xuất xưởng cho quá trình kéo và thả.