"Life is too short, You need python"
엔트리 위젯은 한 줄의 텍스트를 입력하거나 표시하는데 사용되는 위젯으로 우리에게는 사이트 로그인 시 입력하는 ID/Password 입력창, 회원 가입 시 정보를 입력하게 되는 한 줄의 입력창으로 더 친숙한 위젯입니다. 이 번 포스팅에서는 엔트리 위젯을 사용하는 방법과 옵션에 대해 알아보도록 하겠습니다.
Entry ( 엔트리 / 기입창 )
Entry를 이용하여 텍스트를 입력 받거나 출력하기 위한 위젯 창을 생성할 수 있습니다.
Syntax ( 구문 )
Entry 위젯을 사용하려면 다음과 같이 구문을 사용합니다.
entry = tk.Entry(container, **options)
- container - parent window
아래는 Entry 설명을 위한 Skeleton Code 입니다.
( Input )
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('300x150')
root.resizable(False, False)
root.title('Label Widget Demo')
# show the widget syntax here
entry = tk.Entry(root)
entry.pack()
root.mainloop()
( Output )
Method & Option Parameters
Entry 위젯에는 모양을 사용자 정의할 수 있는 많은 옵션이 있습니다.
Entry Method
Method는 Entry변수.Method 형식으로 사용할 수 있습니다.
ex) entry_login.index()
Name | Meaning |
insert(index, “문자열”) | index 위치에 문자열 추가 |
delete(start_index, end_index) | start_index부터 end_index까지의 문자열 삭제 |
get() | 기입창의 텍스트를 문자열로 반환 |
index(index) | index에 대응하는 위치 획득 |
icursor(index) | index 앞에 키보드 커서 설정 |
select_adjust(index) | index 위치까지의 문자열을 블록처리 |
select_range(start_index, end_index) | start_index부터 end_index까지 블록처리 |
select_to(index) | 키보드 커서부터 index까지 블록처리 |
select_from(index) | 키보드 커서의 색인 위치를 index 위치에 문자로 설정하고 선택 |
select_present() | 블록처리 되어있는 경우 True, 아닐 경우 False |
select_clear() | 블록처리 해제 |
xview() | 가로스크롤 연결 |
xview_scroll(num, str) | 가로스크롤의 속성 설정 |
- xview_scroll
- num
- num > 0 : 왼쪽에서 오른쪽으로 스크롤
- num < 0 : 오른쪽에서 왼쪽으로 스크롤
- str
- units : 문자 너비로 스크롤
- pages : 위젯 너비로 스크롤
- num
Entry Parameter
- 문자열 설정 -
Name | Meaning | Default | Preference |
show | 표시되는 문자의 형태 | - | 문자*** |
textvariable | 표시할 문자열을 가져올 변수 | - | - |
justify | 문자열이 여러 줄 일 경우 정렬 방법 | center | center, left, right |
*** 입력 시, 입력되는 모든 문자는 * 처리되어 표시됨
- Widget Format -
Name | Meaning | Default | Preference |
width | 너비 | 0 | 상수 |
relief | 테두리 모양 | flat | flat, groove, raised, ridge, solid, sunken |
borderwidth=bd | 테두리 두께 | 2 | 상수 |
background=bg | 배경 색상 | SystemButtonFace | color |
foreground=fg | 문자열 색상 | SystemButtonFace | color |
insertwidth | 키보드 커서 너비 | 2 | 상수 |
insertborderwidth | 키보드 커서 테두리 두께 | 0 | 상수 |
insertbackground | 키보드 커서 색상 | SystemWindowText | color |
selectborderwidth | 문자열 블록처리 테두리 두께 | 0 | 상수 |
selectbackground | 문자열 블록처리 배경 색상 | SystemHighlight | color |
selectforeground | 문자열 블록처리 문자열 색상 | SystemHighlight | color |
- 기입창 형식 설정 -
Name | Meaning | Default | Preference |
font | 기입창의 문자열 글꼴 설정 | TkDefaultFont | font |
cursor | 기입창의 마우스 커서 모양 | - | 커서 속성*** |
xscrollcommand | 기입창의 가로스크롤 위젯 적용 | - | Scrollbar위젯.set |
*** Cursor 매개 변수
arrow, based_arrow_down, based_arrow_up, boat, bogosity, bottom_left_corner, bottom_right_corner, bottom_side, bottom_tee, box_spiral, center_ptr, circle, clock, coffee_mug, cross, cross_reverse, crosshair, diamond_cross, dot, dotbox, double_arrow, draft_large, draft_small, draped_box, exchange, fleur, gobbler, gumby, hand1, hand2, heart, icon, iron_cross, left_ptr, left_side, left_tee, leftbutton, ll_angle, lr_angle, man, middlebutton, mouse, pencil, pirate, plus, question_arrow, right_ptr, right_side, right_tee, rightbutton, rtl_logo, sailboat, sb_down_arrow, sb_h_double_arrow, sb_left_arrow, sb_right_arrow, sb_up_arrow, sb_v_double_arrow, shuttle, sizing, spider, spraycan, star, target, tcross, top_left_arrow, top_left_corner, top_right_corner, top_side, top_tee, trek, ul_angle, umbrella, ur_angle, watch, wait, xterm, X_cursor
- Widget State -
Name | Meaning | Default | Preference |
state | 상태 설정 | normal | normal***, readonly, disabled |
readonlybackground | readonly 상태일 때 기입창의 배경 색상 | SystemButtonFace | color |
disabledbackground | disabeld 상태일 때 기입창의 배경 색상 | SystemButtonFace | color |
disabledforeground | disabeld 상태일 때 기입창의 문자열 색상 | SystemDisabledText | color |
*** 기본 설정은 normal 상태의 설정을 의미합니다. (bg, fg 등의 설정)
- Highlight Options -
Name | Meaning | Default | Preference |
highlightcolor | 위젯이 선택되었을 때 색상 | SystemWindowFrame | color |
highlightbackground | 위젯이 선택되지 않았을 때 색상 | SystemButtonFace | color |
highlightthickness | 위젯 선택 시 테두리 두께*** | 0 | 상수 |
*** highlightbackground를 설정하였을 경우, 버튼이 선택되지 않았을 때에도 두께가 표시됩니다.
- 엔트리 동작 설정 -
Name | Meaning | Default | Preference |
takefocus | Tab 키를 이용하여 위젯 이동 허용 여부 | True | Boolean |
insertontime | 키보드 커서 깜빡임이 보이는 시간 | 600 | 상수(ms) |
insertofftime | 기입창의 키보드 커서 깜빡임이 보이지 않는 시간 | 300 | 상수(ms) |
Entry의 활용
( Input )
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('300x150')
root.resizable(False, False)
root.title('Py-Life Widget Demo')
# show the widget syntax here >>>
## Create Label Widget
label_name = tk.Label(root, text = 'Username ', font = ('calibre', 10, 'bold'))
label_password = tk.Label(root, text = 'Password ', font = ('calibre', 10, 'bold'))
## Create Entry Widget
name_var=tk.StringVar()
passw_var=tk.StringVar()
entry_name = tk.Entry(root, textvariable = name_var, font = ('calibre', 10, 'normal'))
endtry_password = tk.Entry(root, textvariable = passw_var, font = ('calibre', 10, 'normal'), show = '*')
## Create Button Widget
button_login = tk.Button(root, text = 'Summit', bg = 'yellow', fg = 'red')
## Option Setting
button_login.config(width = 10, height = 2)
button_login.config(text = 'Button 1')
## Place the Label
label_name.grid(row = 0, column = 0)
label_password.grid(row = 1, column = 0)
## Place the Entry
entry_name.grid(row = 0, column = 1)
endtry_password.grid(row = 1, column = 1)
## Place the Button
button_login.grid(row = 3, column = 1)
root.mainloop()
( Output )
마무리
Tkinter Entry 위젯의 사용법과 다양한 활용 방법에 대해 알아보았습니다. Chapter 8에서는 Listbox의 사용법과 다양한 활용 방법에 대해 알아보도록 하겠습니다.
'PYTHON > tkinter' 카테고리의 다른 글
(Tkinter - Basic) Chapter 8. Frame (프레임) (0) | 2022.09.16 |
---|---|
(Python Tkinter) Chapter 6. Button ( 버튼 ) (0) | 2022.09.13 |
(Python Tkinter) Chapter 5. Label ( 레이블 ) (0) | 2022.09.08 |
(Python Tkinter) Chapter 4. place - Geometry(Layout) Managers (0) | 2022.07.28 |
(Python Tkinter) Chapter 3. grid - Geometry(Layout) Managers (0) | 2022.07.28 |