U Ä:âeâ,ã@sTddlZdd„ZGdd„dƒZGdd„dƒZGdd „d ƒZd d „Zed krPeƒdS) éNcCst||ƒ}|jr|SdSdS©N)Ú DndHandlerÚroot)ÚsourceÚeventÚh©rú0/usr/local/python38/lib/python3.8/tkinter/dnd.pyÚ dnd_startls r c@sDeZdZdZdd„Zdd„Zdd„Zdd „Zdd d „Zdd d„Z dS)rNcCs°|jdkrdS|j ¡}z |jWdStk rD||_||_YnX||_d|_|j|_}|j|_ }d||f|_ |dp‚d|_ |  |j |j ¡|  d|j¡d|d<dS)NézÚcursorÚúZhand2)ÚnumÚwidgetZ_rootÚ_DndHandler__dndÚAttributeErrorrrÚtargetZinitial_buttonÚinitial_widgetÚrelease_patternÚ save_cursorÚbindÚ on_releaseÚ on_motion)ÚselfrrrZbuttonrrrr Ú__init__zs$     zDndHandler.__init__cCs2|j}d|_|r.z|`Wntk r,YnXdSr)rrr©rrrrr Ú__del__ŽszDndHandler.__del__c Cs²|j|j}}|j ||¡}|j}d}|rbz |j}Wntk rHYnX|||ƒ}|rZqb|j}q&|j}||kr‚|r®|  ||¡n,|r˜d|_|  ||¡|r®|  ||¡||_dSr) Úx_rootÚy_rootrZwinfo_containingrÚ dnd_acceptrZmasterrÚ dnd_motionÚ dnd_leaveÚ dnd_enter) rrÚxÚyZ target_widgetrÚ new_targetÚattrZ old_targetrrr r—s.    zDndHandler.on_motioncCs| |d¡dS)Né©Úfinish©rrrrr r²szDndHandler.on_releasecCs| |d¡dS)Nrr)r+rrr ÚcancelµszDndHandler.cancelrc Cs’|j}|j}|j}|j}zf|`|j |j¡|j d¡|j|d<d|_|_|_|_|r||rp|  ||¡n |  ||¡W5| ||¡XdS)Nrr ) rrrrÚdnd_endrZunbindrrÚ dnd_commitr")rrZcommitrrrrrrr r*¸s  zDndHandler.finish)N)r) Ú__name__Ú __module__Ú __qualname__rrrrrr,r*rrrr rvs  rc@sNeZdZdd„Zddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dS)ÚIconcCs||_d|_|_|_dSr)ÚnameÚcanvasÚlabelÚid)rr3rrr rÑsz Icon.__init__é cCs€||jkr |j |j||¡dS|jr.| ¡|s6dStj||jddd}|j|||dd}||_||_||_|  d|j ¡dS)NéZraised)ÚtextZ borderwidthZreliefZnw)ZwindowZanchorz ) r4Úcoordsr6ÚdetachÚtkinterZLabelr3Z create_windowr5rÚpress)rr4r$r%r5r6rrr ÚattachÕs   ÿz Icon.attachcCsB|j}|sdS|j}|j}d|_|_|_| |¡| ¡dSr)r4r6r5ÚdeleteZdestroy)rr4r6r5rrr r;ås z Icon.detachcCs4t||ƒr0|j|_|j|_|j |j¡\|_|_ dSr) r r$Úx_offr%Úy_offr4r:r6Úx_origÚy_origr+rrr r=ïs z Icon.presscCs(| |j|¡\}}|j |j||¡dSr)Úwherer4r:r6)rrr$r%rrr Úmove÷sz Icon.movecCs|j |j|j|j¡dSr)r4r:r6rBrC)rrrr Úputbackûsz Icon.putbackcCs8| ¡}| ¡}|j|}|j|}||j||jfSr)Z winfo_rootxZ winfo_rootyrrr@rA)rr4rZx_orgZy_orgr$r%rrr rDþs   z Icon.wherecCsdSrr)rrrrrr r-sz Icon.dnd_endN)r7r7) r/r0r1rr>r;r=rErFrDr-rrrr r2Ïs   r2c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚTestercCs>t |¡|_tj|jddd|_|jjddd|j|j_dS)Néd)ÚwidthZheightZbothr()ÚfillÚexpand)r<ZToplevelÚtopZCanvasr4Úpackr rrrr rs zTester.__init__cCs|Srr©rrrrrr r szTester.dnd_acceptc Csp|j ¡| |j|¡\}}|j |j¡\}}}}||||} } |j |||| || ¡|_| ||¡dSr)r4Ú focus_setrDÚbboxr6Zcreate_rectangleÚdndidr!) rrrr$r%Úx1Úy1Úx2Úy2ZdxZdyrrr r#s  zTester.dnd_enterc CsF| |j|¡\}}|j |j¡\}}}}|j |j||||¡dSr)rDr4rPrQrE) rrrr$r%rRrSrTrUrrr r!szTester.dnd_motioncCs"|j ¡|j |j¡d|_dSr)rLrOr4r?rQrNrrr r"$s zTester.dnd_leavecCs2| ||¡| |j|¡\}}| |j||¡dSr)r"rDr4r>)rrrr$r%rrr r.)s zTester.dnd_commitN) r/r0r1rr r#r!r"r.rrrr rG s rGcCsªt ¡}| d¡tj|jdd ¡t|ƒ}|j d¡t|ƒ}|j d¡t|ƒ}|j d¡tdƒ}tdƒ}td ƒ}|  |j ¡|  |j ¡|  |j ¡|  ¡dS) Nz+1+1ZQuit)Zcommandr9z+1+60z+120+60z+240+60ZICON1ZICON2ZICON3) r<ZTkZgeometryZButtonÚquitrMrGrLr2r>r4Zmainloop)rÚt1Út2Zt3Zi1Zi2Zi3rrr Útest/s        rYÚ__main__)r<r rr2rGrYr/rrrr Úgs Y=#