a
    ãIþf¥  ã                   @   s‚  d dl Z d dlZdZg d¢ZdZdZdZdZdd	„ ZG d
d„ dƒZ	d!dd„Z
d"dd„Zedkr~e ¡ Ze	ddedZee ¡ ƒ ee d¡ƒ ee d¡ƒ ee ¡ ƒ ee d¡ƒ ee d¡ƒ eeƒ ƒ ee d¡e d¡ƒ eejedƒ e	ddZee d¡ejdedƒ ejededZe ¡  ejedejdZe ¡  e	ed d ¡ Zejed  ejed e ¡  dS )#é    Nz0.9)ÚNORMALÚROMANÚBOLDÚITALICÚ
nametofontÚFontÚfamiliesÚnamesZnormalZromanÚboldZitalicc                 C   s   t | ddS )zFGiven the name of a tk named font, returns a Font representation.
    T)ÚnameÚexists)r   ©r   © r   úlib/python3.9/tkinter/font.pyr      s    r   c                   @   sœ   e Zd ZdZe d¡Zdd„ Zdd„ Zdd„ Z	d#dd„Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd$dd„Zdd„ Zdd„ ZeZd%dd „Zd!d"„ Zd	S )&r   aö  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)

    é   c                 C   s:   g }|  ¡ D ]$\}}| d| ¡ | t|ƒ¡ qt|ƒS ©Nú-)ÚitemsÚappendÚstrÚtuple)ÚselfÚkwÚoptionsÚkÚvr   r   r   Ú_set2   s
    z	Font._setc                 C   s$   g }|D ]}|  d| ¡ qt|ƒS r   )r   r   )r   Úargsr   r   r   r   r   Ú_get9   s    z	Font._getc                 C   s:   i }t dt|ƒdƒD ] }||d  ||| dd … < q|S )Nr   é   r   )ÚrangeÚlen)r   r   r   Úir   r   r   Ú_mkdict?   s    zFont._mkdictNFc                 K   sæ   |st  d¡}t|d|ƒ}|r4| | dd|¡¡}n
|  |¡}|sTdtt| jƒƒ }|| _	|r®d| _
| j	| | dd¡¡vrt j d| j	f ¡‚|rÌ|jdd| j	g|¢R Ž  n|jdd	| j	g|¢R Ž  d
| _
|| _|j| _|j| _d S )Nzuse fontÚtkÚfontÚactualFr	   z$named font %s does not already existÚ	configureZcreateT)ÚtkinterÚ_get_default_rootÚgetattrÚ	splitlistÚcallr   r   ÚnextÚcounterr   Údelete_fontZ_tkinterZTclErrorÚ_tkÚ_splitÚ_call)r   Úrootr%   r   r   r   r$   r   r   r   Ú__init__E   s,    


ÿzFont.__init__c                 C   s   | j S ©Nr   ©r   r   r   r   Ú__str__d   s    zFont.__str__c                 C   s&   t |tƒstS | j|jko$| j|jkS r5   )Ú
isinstancer   ÚNotImplementedr   r0   )r   Úotherr   r   r   Ú__eq__g   s    
zFont.__eq__c                 C   s
   |   |¡S r5   )Úcget)r   Úkeyr   r   r   Ú__getitem__l   s    zFont.__getitem__c                 C   s   | j f i ||i¤Ž d S r5   )r'   )r   r=   Úvaluer   r   r   Ú__setitem__o   s    zFont.__setitem__c                 C   s2   z| j r|  dd| j¡ W n ty,   Y n0 d S )Nr%   Údelete)r/   r2   r   Ú	Exceptionr6   r   r   r   Ú__del__r   s
    zFont.__del__c                 C   s   t | jfi |  ¡ ¤ŽS )z*Return a distinct copy of the current font)r   r0   r&   r6   r   r   r   Úcopyy   s    z	Font.copyc                 C   sb   d}|rd|f}|r:|d| f }| j dd| jg|¢R Ž S |  |  | j dd| jg|¢R Ž ¡¡S dS )zReturn actual font attributesr   ú
-displayofr   r%   r&   N)r2   r   r#   r1   )r   ÚoptionÚ	displayofr   r   r   r   r&   }   s    ÿzFont.actualc                 C   s   |   dd| jd| ¡S )zGet font attributer%   Úconfigr   )r2   r   )r   rF   r   r   r   r<   ‰   s    z	Font.cgetc              	   K   sD   |r$| j dd| jg|  |¡¢R Ž  n|  |  |   dd| j¡¡¡S dS )zModify font attributesr%   rH   N)r2   r   r   r#   r1   )r   r   r   r   r   rH      s    ÿ
ÿzFont.configc                 C   s4   |f}|rd||f}| j  | jdd| jg|¢R Ž ¡S )zReturn text widthrE   r%   Úmeasure)r0   Úgetintr2   r   )r   ÚtextrG   r   r   r   r   rI   ˜   s    
zFont.measurec                 O   s²   d}|  dd¡}|rd|f}|rN||  |¡ }| j | jdd| jg|¢R Ž ¡S |  | jdd| jg|¢R Ž ¡}i }tdt|ƒdƒD ](}| j ||d	  ¡||| d	d… < q€|S dS )
z}Return font metrics.

        For best performance, create a dummy widget
        using this font before calling this method.r   rG   NrE   r%   Úmetricsr   r   r   )	Úpopr   r0   rJ   r2   r   r1   r    r!   )r   r   r   r   rG   Úresr"   r   r   r   rL   Ÿ   s    ÿ&zFont.metrics)NNNF)NN)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	itertoolsÚcountr.   r   r   r#   r4   r7   r;   r>   r@   rC   rD   r&   r<   rH   r'   rI   rL   r   r   r   r   r      s$   


	
r   c                 C   s<   | st  d¡} d}|rd|f}| j | jjddg|¢R Ž ¡S )zGet font families (as a tuple)zuse font.families()r   rE   r%   r   ©r(   r)   r$   r+   r,   )r3   rG   r   r   r   r   r   ´   s    
r   c                 C   s$   | st  d¡} | j | j dd¡¡S )z'Get names of defined fonts (as a tuple)zuse font.names()r%   r	   rU   )r3   r   r   r   r	   ¾   s    
r	   Ú__main__Útimesé   )ÚfamilyÚsizeÚweightrY   r[   ZhelloZ	linespace)rG   )ZCourieré   r
   )r%   zHello, world)rK   r%   zQuit!)rK   Zcommandr%   )r[   )NN)N)rS   r(   Ú__version__Ú__all__r   r   r   r   r   r   r   r	   rO   ZTkr3   ÚfÚprintr&   rH   r<   rI   rL   ZLabelÚwZpackZButtonZdestroyrD   ZfbZmainloopr   r   r   r   Ú<module>   sD    






