tkinter.dnd --- پشتیبانی از کشیدن و رها کردن

کد منبع: Lib/tkinter/dnd.py


توجه

این آزمایشی است و قرار است زمانی که با Tk DND جایگزین شود، منسوخ شود.

ماژول tkinter.dnd پشتیبانی از کشیدن و رها کردن اشیاء درون یک برنامه واحد، درون همان پنجره یا بین پنجره‌ها را فراهم می‌کند. برای فعال کردن امکان کشیدن یک شیء، باید برای آن یک پیوند رویداد ایجاد کنید که فرآیند کشیدن و رها کردن را آغاز می‌کند. معمولاً یک رویداد ButtonPress را به یک تابع کال‌بک که خودتان می‌نویسید مقید میکنید (به اتصال‌ها و رویدادها مراجعه کنید). این تابع باید dnd_start() را فراخوانی کند، که در آن source شیءای است که باید کشیده شود، و event رویدادی است که این فراخوانی را ایجاد کرده است (آرگومان تابع کال‌بک شما).

انتخاب یک شیء هدف به صورت زیر انجام می‌شود:

  1. جستجوی بالا به پایین در ناحیه‌ی زیر ماوس برای یک ابزارک هدف :

    • ابزارک هدف باید یک ویژگی dnd_accept فراخوانی‌پذیر داشته باشد؛

    • اگر dnd_accept وجود نداشته باشد یا None را برگرداند، جستجو به ابزارک والد منتقل می‌شود؛

    • اگر هیچ ابزارک هدفی یافت نشود، شیء هدف None خواهد بود.

  2. فراخوانی <old_target>.dnd_leave(source, event).

  3. فراخوانی <new_target>.dnd_enter(source, event).

  4. فراخوانی <target>.dnd_commit(source, event) برای آگاه‌سازی از رها شدن.

  5. برای اعلام پایان عملیات کشیدن و رها کردن، <source>.dnd_end(target, event) را فراخوانی کنید.

class tkinter.dnd.DndHandler(source, event)

کلاس DndHandler رویدادهای کشیدن و رها کردن را با پیگیری رویدادهای Motion و ButtonRelease روی ریشه‌ی ابزارک رویداد مدیریت می‌کند.

cancel(event=None)

فرآیند کشیدن و رها کردن را لغو کنید.

finish(event, commit=0)

توابع پایانِ کشیدن و رها کردن را اجرا کنید.

on_motion(event)

در حین کشیدن، ناحیه زیر ماوس را برای اشیاء هدف بررسی کنید.

on_release(event)

هنگامی که الگوی رها کردن فعال می‌شود، سیگنال پایان کشیدن را ارسال کنید.

tkinter.dnd.dnd_start(source, event)

تابع کارخانه‌ای برای فرآیند کشیدن و رها کردن. نمونه‌ی DndHandler را که عملیات کشیدن را مدیریت می‌کند برمی‌گرداند، یا اگر امکان آغاز عملیات کشیدن وجود نداشت، None برمی‌گرداند.

همچنین ملاحظه نمائید

اتصال‌ها و رویدادها