JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrU e5d,@sTddlZddZGdddZGdddZGdd d Zd d Zed krPedS) NcCst||}|jr|SdSdSN) DndHandlerroot)sourceeventhr#/usr/lib64/python3.8/tkinter/dnd.py dnd_startls r c@sDeZdZdZddZddZddZdd Zdd d Zdd dZ dS)rNcCs|jdkrdS|j}z |jWdStk rD||_||_YnX||_d|_|j|_}|j|_ }d||f|_ |dpd|_ | |j |j | d|jd|d<dS)NzcursorZhand2)ZnumwidgetZ_root_DndHandler__dndAttributeErrorrrtargetZinitial_buttoninitial_widgetrelease_pattern save_cursorbind on_release on_motion)selfrrrZbuttonrrrr __init__zs$     zDndHandler.__init__cCs2|j}d|_|r.z|`Wntk r,YnXdSr)rrrrrrrr __del__szDndHandler.__del__c Cs|j|j}}|j||}|j}d}|rbz |j}Wntk rHYnX|||}|rZqb|j}q&|j}||kr|r| ||n,|rd|_| |||r| ||||_dSr) x_rooty_rootrZwinfo_containingr dnd_acceptrZmasterr dnd_motion dnd_leave dnd_enter) rrxyZ target_widgetr new_targetattrZ old_targetrrr rs.    zDndHandler.on_motioncCs||ddS)Nfinishrrrrr rszDndHandler.on_releasecCs||ddS)Nrr(r*rrr cancelszDndHandler.cancelrc Cs|j}|j}|j}|j}zf|`|j|j|jd|j|d<d|_|_|_|_|r||rp| ||n | ||W5|||XdS)Nrr ) rrrrdnd_endrZunbindrr dnd_commitr!)rrZcommitrrrrrrr r)s  zDndHandler.finish)N)r) __name__ __module__ __qualname__rrrrrr+r)rrrr rvs  rc@sNeZdZddZdddZddZdd Zd d Zd d ZddZ ddZ dS)IconcCs||_d|_|_|_dSr)namecanvaslabelid)rr2rrr rsz Icon.__init__ cCs||jkr |j|j||dS|jr.||s6dStj||jddd}|j|||dd}||_||_||_| d|j dS)NZraised)textZ borderwidthZreliefZnw)ZwindowZanchorz ) r3coordsr5detachtkinterZLabelr2Z create_windowr4rpress)rr3r#r$r4r5rrr attachs   z Icon.attachcCsB|j}|sdS|j}|j}d|_|_|_|||dSr)r3r5r4deleteZdestroy)rr3r5r4rrr r:s z Icon.detachcCs4t||r0|j|_|j|_|j|j\|_|_ dSr) r r#x_offr$y_offr3r9r5x_origy_origr*rrr r<s z Icon.presscCs(||j|\}}|j|j||dSr)wherer3r9r5)rrr#r$rrr movesz Icon.movecCs|j|j|j|jdSr)r3r9r5rArB)rrrr putbacksz Icon.putbackcCs8|}|}|j|}|j|}||j||jfSr)Z winfo_rootxZ winfo_rootyrrr?r@)rr3rZx_orgZy_orgr#r$rrr rCs   z Icon.wherecCsdSrr)rrrrrr r,sz Icon.dnd_endN)r6r6) r.r/r0rr=r:r<rDrErCr,rrrr r1s   r1c@s<eZdZddZddZddZddZd d Zd d Zd S)TestercCs>t||_tj|jddd|_|jjddd|j|j_dS)Nd)widthZheightZbothr')Zfillexpand)r;ZTopleveltopZCanvasr3packrrrrr rs zTester.__init__cCs|Srrrrrrrr rszTester.dnd_acceptc Csp|j||j|\}}|j|j\}}}}||||} } |j|||| || |_|||dSr)r3 focus_setrCbboxr5Zcreate_rectangledndidr ) rrrr#r$x1y1x2y2ZdxZdyrrr r"s  zTester.dnd_enterc CsF||j|\}}|j|j\}}}}|j|j||||dSr)rCr3rNrOrD) rrrr#r$rPrQrRrSrrr r szTester.dnd_motioncCs"|j|j|jd|_dSr)rJrMr3r>rOrLrrr r!$s zTester.dnd_leavecCs2|||||j|\}}||j||dSr)r!rCr3r=)rrrr#r$rrr r-)s zTester.dnd_commitN) r.r/r0rrr"r r!r-rrrr rF s rFcCst}|dtj|jddt|}|jdt|}|jdt|}|jdtd}td}td }| |j | |j | |j | dS) Nz+1+1ZQuit)Zcommandr8z+1+60z+120+60z+240+60ZICON1ZICON2ZICON3) r;ZTkZgeometryZButtonquitrKrFrJr1r=r3Zmainloop)rt1t2Zt3Zi1Zi2Zi3rrr test/s        rW__main__)r;r rr1rFrWr.rrrr gs Y=#