Your IP : 216.73.216.84
U
e5d�-�@s�dZddlTddlmZmZGdd�d�ZGdd�de�Zdd �ZGd
d�de�ZGdd
�d
e�Z dd�Z
Gdd�de�Zdd�ZGdd�de�Z
dd�Zedkr�dd�Ze�dS)a&This modules handles dialog boxes.
It contains the following public symbols:
SimpleDialog -- A simple but flexible modal dialog box
Dialog -- a base class for dialogs
askinteger -- get an integer from the user
askfloat -- get a float from the user
askstring -- get a string from the user
�)�*)�
messagebox�_get_default_rootc@sLeZdZdgddddfdd�Zddd�Zd d
�Zdd�Zd
d�Zdd�ZdS)�SimpleDialog�NcCs|rt||d�|_n
t|�|_|r:|j�|�|j�|�t|j�t|j|dd�|_|jjdtd�t |j�|_
|j
��||_||_||_
|j�d|j�tt|��D]L}||} t|j
| ||fdd�d �}
||kr�|
jtd
d�|
jttdd�q�|j�d
|j�|�|�dS)N)�class_i�)�textZaspect�)�expand�fill�<Return>cSs
|�|�S�N)�done��self�num�r�,/usr/lib64/python3.8/tkinter/simpledialog.py�<lambda>8�z'SimpleDialog.__init__.<locals>.<lambda>�r�command�)ZreliefZborderwidth)�siderr
�WM_DELETE_WINDOW)�Toplevel�root�titleZiconname�
_setup_dialogZMessage�message�packZBOTH�Frame�framer�cancel�default�bind�return_event�range�len�ButtonZconfigZRIDGE�LEFT�protocol�wm_delete_window�_set_transient)r�masterr�buttonsr$r#rrr�s�brrr�__init__ s2
�zSimpleDialog.__init__��?�333333�?c
Cs|j}|��|�|�|��|��rJ|��}|��}|��}|��}n|� �}|�
�}d}}|��} |��}
||| |}|||
|}|| |� �kr�|� �| }n|dkr�d}||
|�
�kr�|�
�|
}n|dkr�d}|�
d||f�|��dS)Nr�+%d+%d)r�withdraw� transient�update_idletasksZwinfo_ismappedZwinfo_widthZwinfo_height�winfo_rootx�winfo_rootyZwinfo_screenwidthZwinfo_screenheightZwinfo_reqwidthZwinfo_reqheight�geometry� deiconify)
rr.ZrelxZrelyZwidgetZm_widthZm_heightZm_xZm_yZw_widthZw_height�x�yrrrr-?s4
zSimpleDialog._set_transientcCs.|j��|j��|j��|j��|jSr
)r�wait_visibility�grab_set�mainloop�destroyr�rrrr�go\s
zSimpleDialog.gocCs&|jdkr|j��n|�|j�dSr
)r$r�bellr�rZeventrrrr&cs
zSimpleDialog.return_eventcCs&|jdkr|j��n|�|j�dSr
)r#rrErrCrrrr,is
zSimpleDialog.wm_delete_windowcCs||_|j��dSr
)rr�quitrrrrroszSimpleDialog.done)r3r4) �__name__�
__module__�__qualname__r2r-rDr&r,rrrrrrs�
rc@sVeZdZdZddd�Zdd�Zdd�Zd d
�Zddd�Zdd
d�Z dd�Z
dd�ZdS)�DialogzZClass to open dialogs.
This class is intended as a base class for custom dialogs
NcCs�|}|std�}t�||�|��|dk r>|��r>|�|�|rL|�|�t|�||_d|_ t
|�}|�|�|_|j
ddd�|��|js�||_|�d|j�|dk r�|�d|��d|��df�|��|j��|��|��|�|�dS)z�Initialize a dialog.
Arguments:
parent -- a parent window (the application window)
title -- the dialog title
zcreate dialog windowN�)�padx�padyrr5�2)rrr2r6Zwinfo_viewabler7rr�parent�resultr!�body�
initial_focusr � buttonboxr+r#r;r9r:r<� focus_setr?r@Zwait_window)rrPrr.rRrrrr2{s8
�
zDialog.__init__cCsd|_t�|�dS)zDestroy the windowN)rSrrBrCrrrrB�szDialog.destroycCsdS)z�create dialog body.
return widget that should have initial focus.
This method should be overridden, and is called
by the __init__ method.
Nr)rr.rrrrR�szDialog.bodycCsvt|�}t|dd|jtd�}|jtddd�t|dd|jd�}|jtddd�|�d|j�|�d |j�|��d
S)z[add standard button box.
override if you do not want the standard buttons
ZOK�
)r�widthrr$rL)rrMrN�Cancel)rrWrrz<Escape>N)r!r)�okZACTIVEr r*r#r%)rZbox�wrrrrT�szDialog.buttonboxcCsB|��s|j��dS|��|��z|��W5|��XdSr
)�validaterSrUr6r8r#�applyrFrrrrY�s
z Dialog.okcCs |jdk r|j��|��dSr
)rPrUrBrFrrrr#�s
z
Dialog.cancelcCsdS)z�validate the data
This method is called automatically to validate the data before the
dialog is destroyed. By default, it always validates OK.
r rrCrrrr[�szDialog.validatecCsdS)z�process the data
This method is called automatically to process the data, *after*
the dialog is destroyed. By default, it does nothing.
NrrCrrrr\�szDialog.apply)N)N)N)rHrIrJ�__doc__r2rBrRrTrYr#r[r\rrrrrKts
7
rKcCs:|jdkr |j�dd|dd�n|jdkr6|�dd�dS) NZaquaz!::tk::unsupported::MacWindowStyleZstyleZ
moveableModalrZx11z-typeZdialog)Z_windowingsystemZtkZcallZ
wm_attributes)rZrrrrs
�
rc@s.eZdZd
dd�Zdd�Zdd�Zdd �ZdS)�_QueryDialogNcCs*||_||_||_||_t�|||�dSr
)�prompt�minvalue�maxvalue�initialvaluerKr2)rrr_rbr`rarPrrrr2s
z_QueryDialog.__init__cCsd|_t�|�dSr
)�entryrKrBrCrrrrBsz_QueryDialog.destroycCsrt||jtd�}|jddtd�t|dd�|_|jjddttd�|jdk rl|j� d|j�|j�
dt�|jS)N)rZjustifyrrL)�rowrMZstickyrc)�namer )ZLabelr_r*Zgrid�WZEntryrc�Erb�insertZselect_rangeZEND)rr.rZrrrrR s
z_QueryDialog.bodycCs�z|��}Wn,tk
r8tjd|jd|d�YdSX|jdk rh||jkrhtjdd|j|d�dS|jdk r�||jkr�tjdd|j|d�dS||_d S)
Nz
Illegal valuez
Please try again)rPrz Too smallz2The allowed minimum value is %s. Please try again.z Too largez2The allowed maximum value is %s. Please try again.r )� getresult�
ValueErrorr�showwarning�errormessager`rarQ)rrQrrrr[.s:�����z_QueryDialog.validate)NNNN)rHrIrJr2rBrRr[rrrrr^
s�
r^c@seZdZdZdd�ZdS)�
_QueryIntegerzNot an integer.cCs|�|j���Sr
)Zgetintrc�getrCrrrriSsz_QueryInteger.getresultN�rHrIrJrlrirrrrrmPsrmcKst||f|�}|jS)z�get an integer from the user
Arguments:
title -- the dialog title
prompt -- the label text
**kw -- see SimpleDialog class
Return value is an integer
)rmrQ�rr_�kw�drrr�
askintegerWsrsc@seZdZdZdd�ZdS)�_QueryFloatzNot a floating point value.cCs|�|j���Sr
)Z getdoublercrnrCrrrriisz_QueryFloat.getresultNrorrrrrtfsrtcKst||f|�}|jS)z�get a float from the user
Arguments:
title -- the dialog title
prompt -- the label text
**kw -- see SimpleDialog class
Return value is a float
)rtrQrprrr�askfloatmsruc@s$eZdZdd�Zdd�Zdd�ZdS)�_QueryStringcOs6d|kr|d|_|d=nd|_tj|f|�|�dS)N�show)�_QueryString__showr^r2)r�argsrqrrrr2}s
z_QueryString.__init__cCs(t�||�}|jdk r$|j|jd�|S)N)rw)r^rRrxZ configure)rr.rcrrrrR�s
z_QueryString.bodycCs
|j��Sr
)rcrnrCrrrri�sz_QueryString.getresultN)rHrIrJr2rRrirrrrrv|srvcKst||f|�}|jS)z�get a string from the user
Arguments:
title -- the dialog title
prompt -- the label text
**kw -- see SimpleDialog class
Return value is a string
)rvrQrprrr� askstring�srz�__main__cCsLt�}|fdd�}t|d|d�}|��t|d|jd�}|��|��dS)NcSs^t|ddddgdddd�}t|���ttd d
dd��ttd d
ddd��ttd d��dS)Nz�This is a test dialog. Would this have been an actual dialog, the buttons below would have been glowing in soft pink light.
Do you believe this?ZYesZNorXr�zTest Dialog)rr/r$r#rZSpamz Egg count�)rbzEgg weight
(in tons)r �d)r`raz Egg label)r�printrDrsrurz)rrrrrr�doit�s�
�ztest.<locals>.doitZTestrZQuit)ZTkr)r rGrA)rr��t�qrrr�test�sr�N)r]ZtkinterrrrrrKrr^rmrsrtrurvrzrHr�rrrr�<module>s V
C
?>