a ÕDOg¥ã@s‚ddlZddlZdZgd¢ZdZdZdZdZdd „ZGd d „d ƒZ d!d d „Z d"dd„Z e dkr~e  ¡Ze ddedZee ¡ƒee d¡ƒee d¡ƒee ¡ƒee d¡ƒee d¡ƒee ƒƒee d¡e d¡ƒeejedƒe ddZee d¡ejdedƒejededZe ¡ejedejdZe ¡e edd ¡Zejed ejede ¡dS)#éNz0.9)ÚNORMALÚROMANÚBOLDÚITALICÚ nametofontÚFontÚfamiliesÚnamesZnormalZromanÚboldZitaliccCs t|ddS)zFGiven the name of a tk named font, returns a Font representation. T)ÚnameÚexists)r©r ©rú$/usr/lib64/python3.9/tkinter/font.pyrsrc@sœeZdZdZe d¡Zdd„Zdd„Zdd„Z d#d d „Z d d„Z dd„Z dd„Z dd„Zdd„Zdd„Zd$dd„Zdd„Zdd„ZeZd%dd „Zd!d"„Zd S)&raöRepresents a named font. Constructor options are: font -- font specifier (name, system font, or (family, size, style)-tuple) name -- name to use for this font configuration (defaults to a unique name) exists -- does a named font by this name already exist? Creates a new named font if False, points to the existing font if True. Raises _tkinter.TclError if the assertion is false. the following are ignored if font is specified: family -- font 'family', e.g. Courier, Times, Helvetica size -- font size in points weight -- font thickness: NORMAL, BOLD slant -- font slant: ROMAN, ITALIC underline -- font underlining: false (0), true (1) overstrike -- font strikeout: false (0), true (1) écCs:g}| ¡D]$\}}| d|¡| t|ƒ¡q t|ƒS©Nú-)ÚitemsÚappendÚstrÚtuple)ÚselfÚkwÚoptionsÚkÚvrrrÚ_set2s z Font._setcCs$g}|D]}| d|¡qt|ƒSr)rr)rÚargsrrrrrÚ_get9sz Font._getcCs:i}tdt|ƒdƒD] }||d|||dd…<q|S)Nrér)ÚrangeÚlen)rrrÚirrrÚ_mkdict?sz Font._mkdictNFcKsæ|st d¡}t|d|ƒ}|r4| | dd|¡¡}n | |¡}|sTdtt|jƒƒ}||_ |r®d|_ |j | | dd¡¡vrtj   d|j f¡‚|rÌ|jdd|j g|¢RŽn|jdd |j g|¢RŽd |_ ||_ |j|_|j|_dS) Nzuse fontÚtkÚfontÚactualFr z$named font %s does not already existÚ configureZcreateT)ÚtkinterÚ_get_default_rootÚgetattrÚ splitlistÚcallrrÚnextÚcounterr Ú delete_fontZ_tkinterZTclErrorÚ_tkÚ_splitÚ_call)rÚrootr%r r rr$rrrÚ__init__Es,    ÿz Font.__init__cCs|jS©Nr ©rrrrÚ__str__dsz Font.__str__cCs&t|tƒstS|j|jko$|j|jkSr5)Ú isinstancerÚNotImplementedr r0)rÚotherrrrÚ__eq__gs z Font.__eq__cCs | |¡Sr5)Úcget)rÚkeyrrrÚ __getitem__lszFont.__getitem__cCs|jfi||i¤ŽdSr5)r')rr=ÚvaluerrrÚ __setitem__oszFont.__setitem__cCs2z|jr| dd|j¡Wnty,Yn0dS)Nr%Údelete)r/r2r Ú Exceptionr6rrrÚ__del__rs  z Font.__del__cCst|jfi| ¡¤ŽS)z*Return a distinct copy of the current font)rr0r&r6rrrÚcopyysz Font.copycCsbd}|rd|f}|r:|d|f}|jdd|jg|¢RŽS| | |jdd|jg|¢RŽ¡¡SdS)zReturn actual font attributesrú -displayofrr%r&N)r2r r#r1)rÚoptionÚ displayofrrrrr&}sÿz Font.actualcCs| dd|jd|¡S)zGet font attributer%Úconfigr)r2r )rrFrrrr<‰sz Font.cgetc KsD|r$|jdd|jg| |¡¢RŽn| | | dd|j¡¡¡SdS)zModify font attributesr%rHN)r2r rr#r1)rrrrrrHsÿ ÿz Font.configcCs4|f}|rd||f}|j |jdd|jg|¢RŽ¡S)zReturn text widthrEr%Úmeasure)r0Úgetintr2r )rÚtextrGrrrrrI˜s z Font.measurecOs²d}| dd¡}|rd|f}|rN|| |¡}|j |jdd|jg|¢RŽ¡S| |jdd|jg|¢RŽ¡}i}tdt|ƒdƒD](}|j ||d ¡|||d d…<q€|SdS) z}Return font metrics. For best performance, create a dummy widget using this font before calling this method.rrGNrEr%Úmetricsrrr) Úpoprr0rJr2r r1r r!)rrrrrGÚresr"rrrrLŸs ÿ&z Font.metrics)NNNF)NN)N)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú itertoolsÚcountr.rrr#r4r7r;r>r@rCrDr&r<rHr'rIrLrrrrrs$     rcCs<|st d¡}d}|rd|f}|j |jjddg|¢RŽ¡S)zGet font families (as a tuple)zuse font.families()rrEr%r©r(r)r$r+r,)r3rGrrrrr´s  rcCs$|st d¡}|j |j dd¡¡S)z'Get names of defined fonts (as a tuple)zuse font.names()r%r rU)r3rrrr ¾s r Ú__main__Útimesé)ÚfamilyÚsizeÚweightrYr[ZhelloZ linespace)rG)ZCourierér )r%z Hello, world)rKr%zQuit!)rKZcommandr%)r[)NN)N)rSr(Ú __version__Ú__all__rrrrrrrr rOZTkr3ÚfÚprintr&rHr<rIrLZLabelÚwÚpackZButtonZdestroyrDZfbZmainlooprrrrÚsD