o
    ŠbcX  ã                   @   s†  d dl Z d dlZdZg d¢ZdZdZdZdZd!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 dS )#é    Nz0.9)ÚNORMALÚROMANÚBOLDÚITALICÚ
nametofontÚFontÚfamiliesÚnamesÚnormalÚromanÚboldÚitalicc                 C   s   t | d|dS )zFGiven the name of a tk named font, returns a Font representation.
    T)ÚnameÚexistsÚroot)r   )r   r   © r   ú#/usr/lib/python3.10/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„ 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ê   |d u r	t  d¡}t|d|ƒ}|r| | dd|¡¡}n|  |¡}|s,dtt| jƒƒ }|| _	|rYd| _
| j	| | dd¡¡vrJt j d| j	f ¡‚|rX|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Ú	configureÚcreateT)ÚtkinterÚ_get_default_rootÚgetattrÚ	splitlistÚcallr   r   ÚnextÚcounterr   Údelete_fontÚ_tkinterÚTclErrorÚ_tkÚ_splitÚ_call)r   r   r(   r   r   r   r'   r   r   r   Ú__init__E   s.   


ÿ€zFont.__init__c                 C   s   | j S ©N)r   ©r   r   r   r   Ú__str__d   s   zFont.__str__c                 C   s"   d| j j› d| j j› d| j›dS )Nú<Ú.z object ú>)Ú	__class__Ú
__module__Ú__qualname__r   r;   r   r   r   Ú__repr__g   s   ÿzFont.__repr__c                 C   s&   t |tƒstS | j|jko| j|jkS r:   )Ú
isinstancer   ÚNotImplementedr   r6   )r   Úotherr   r   r   Ú__eq__k   s   
zFont.__eq__c                 C   s
   |   |¡S r:   )Úcget)r   Úkeyr   r   r   Ú__getitem__p   s   
zFont.__getitem__c                 C   s   | j di ||i¤Ž d S )Nr   )r*   )r   rI   Úvaluer   r   r   Ú__setitem__s   s   zFont.__setitem__c                 C   s8   z| j r|  dd| j¡ W d S W d S  ty   Y d S w )Nr(   Údelete)r3   r8   r   Ú	Exceptionr;   r   r   r   Ú__del__v   s   ÿÿzFont.__del__c                 C   s   t | jfi |  ¡ ¤ŽS )z*Return a distinct copy of the current font)r   r6   r)   r;   r   r   r   Úcopy}   ó   z	Font.copyc                 C   s^   d}|rd|f}|r|d| f }| j dd| jg|¢R Ž S |  |  | j dd| jg|¢R Ž ¡¡S )zReturn actual font attributesr   ú
-displayofr   r(   r)   )r8   r   r&   r7   )r   ÚoptionÚ	displayofr    r   r   r   r)      s   ÿzFont.actualc                 C   s   |   dd| jd| ¡S )zGet font attributer(   Úconfigr   )r8   r   )r   rS   r   r   r   rH      rQ   z	Font.cgetc              	   K   sB   |r| j dd| jg|  |¡¢R Ž  dS |  |  |   dd| j¡¡¡S )zModify font attributesr(   rU   N)r8   r   r   r&   r7   )r   r   r   r   r   rU   ‘   s   ÿÿzFont.configc                 C   s4   |f}|r
d||f}| j  | jdd| jg|¢R Ž ¡S )zReturn text widthrR   r(   Úmeasure)r6   Úgetintr8   r   )r   ÚtextrT   r    r   r   r   rV   œ   s   
 zFont.measurec                 O   s®   d}|  dd¡}|rd|f}|r'||  |¡ }| 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 )
z}Return font metrics.

        For best performance, create a dummy widget
        using this font before calling this method.r   rT   NrR   r(   Úmetricsr   r"   r   )	Úpopr!   r6   rW   r8   r   r7   r#   r$   )r   r   r   r    rT   Úresr%   r   r   r   rY   £   s   ÿ&zFont.metrics)NNNF©NNr:   )Ú__name__rA   rB   Ú__doc__Ú	itertoolsÚcountr2   r   r!   r&   r9   r<   rC   rG   rJ   rL   rO   rP   r)   rH   rU   r*   rV   rY   r   r   r   r   r      s(    


	
r   c                 C   s@   | du r	t  d¡} d}|rd|f}| j | jjddg|¢R Ž ¡S )zGet font families (as a tuple)Nzuse font.families()r   rR   r(   r   ©r,   r-   r'   r/   r0   )r   rT   r    r   r   r   r   ¸   s   
r   c                 C   s(   | du r	t  d¡} | j | j dd¡¡S )z'Get names of defined fonts (as a tuple)Nzuse font.names()r(   r	   ra   )r   r   r   r   r	   Â   s   
r	   Ú__main__Útimesé   )ÚfamilyÚsizeÚweightre   rg   ÚhelloÚ	linespace)rT   )ÚCourieré   r   )r(   zHello, world)rX   r(   zQuit!)rX   Úcommandr(   )rg   r:   r\   )r_   r,   Ú__version__Ú__all__r   r   r   r   r   r   r   r	   r]   ÚTkr   ÚfÚprintr)   rU   rH   rV   rY   ÚLabelÚwÚpackÚButtonÚdestroyrP   ÚfbÚmainloopr   r   r   r   Ú<module>   sH   
 


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