2008-08-25 23 views
5

Tôi hơi bối rối khi kéo và thả vào wxPython (nhưng có lẽ các câu hỏi này liên quan đến kéo và thả trong các khung công tác GUI khác). Các khung công tác cung cấp một vài callbacks (OnEnter và OnDragOver) cho phép tôi thông báo cho hệ thống biết liệu vị trí chuột hiện tại có phải là nơi hợp lệ để thả bất cứ thứ gì đang được kéo. Từ những phương thức này, tôi có thể trả về wx.DragNone, wx.DragCopy, v.v .. Những thứ mà tôi không thể gọi là GetData, có nghĩa là tôi không được phép kiểm tra dữ liệu mà người dùng đang kéo. Nếu tôi không thể xem dữ liệu, tôi phải biết liệu người dùng có thể thả xuống ở đây không?wxpython: Làm cách nào để kiểm tra dữ liệu đã kéo trong OnDragOver?

Trả lời

1

Một giải pháp, đó là một hack hữu ích hạn chế, là khi một kéo được bắt đầu, lưu trữ dữ liệu được kéo trong một tham chiếu toàn cầu hoặc tĩnh ở đâu đó. Bằng cách này, trong các trình xử lý OnEnter và OnDragOver, có thể lấy một tham chiếu đến dữ liệu đang được kéo. Đây là khóa học chỉ hữu ích cho các kéo trong cùng một ứng dụng (cùng một ví dụ của ứng dụng, thực sự).

1

Không có cách nào để xem dữ liệu đã kéo trong các phương thức OnEnterOnDragOver.

Giải pháp duy nhất tôi tìm thấy là lưu trữ mục đã kéo trong một số biến mẫu sau đó có thể đọc được bên trong các phương thức này.

+0

Bạn có thể mở rộng điều này một chút không. Tôi đã/đang lên kế hoạch sử dụng Wx cho một dự án thú vị. Kéo với một trở lại x/y, là một cái gì đó tôi đã được đếm trên. –

+0

Ồ, bạn CÓ THỂ thấy dữ liệu bị rơi vào đâu, bạn không thể thấy những gì đang được kéo trong khi kéo (trước khi người dùng buông nút chuột), điều này đôi khi hữu ích (ví dụ: nếu bạn muốn thay đổi con trỏ chuột tùy thuộc vào nội dung đã kéo). – DzinX