Python 학습] 기초 학습 - 입력된 text 출력하기 #1
▣ 입력돤 TEXT 출력 프로그램

위 제공된 코드는 `customtkinter` 라이브러리를 사용한 간단한 GUI 프로그램으로, 사용자가 텍스트를 입력하고 "출력" 버튼을 클릭하면 입력한 내용을 아래에 파란색 텍스트로 표시하는 기능을 제공합니다. 창 크기는 300x300 픽셀로 설정되어 있습니다. 아래는 프로그램의 주요 기능과 동작을 한국어로 설명한 내용입니다:
프로그램 기능
1.텍스트 입력
- 사용자는 창 중앙 상단에 위치한 텍스트 입력창(`CTkEntry`)에 원하는 텍스트를 입력할 수 있습니다.
- 입력창에는 "텍스트를 입력하세요"라는 플레이스홀더 텍스트가 표시되어 사용자에게 입력을 유도합니다.
2.출력 버튼 클릭
- 입력창 아래에 "출력"이라는 버튼(`CTkButton`)이 있습니다.
- 이 버튼을 클릭하면 사용자가 입력창에 입력한 텍스트가 아래쪽 레이블(`CTkLabel`)에 표시됩니다.
3. 파란색 텍스트 출력
- 버튼 클릭 시 입력된 텍스트는 레이블에 파란색(`text_color="blue"`)으로 표시됩니다.
- 출력된 텍스트는 창의 중앙 하단(세로 70% 위치)에 중앙 정렬로 나타납니다.
4. 창 구성
- 창 크기는 300x300 픽셀로 고정되어 있습니다.
- 입력창, 버튼, 레이블은 상대 좌표(`relx`, `rely`)를 사용하여 배치되어 창 크기가 변경되어도
상대적인 위치를 유지합니다.
- 입력창: 창의 가로 중심(50%), 세로 30% 위치
- 버튼: 창의 가로 중심(50%), 세로 50% 위치
- 레이블: 창의 가로 중심(50%), 세로 70% 위치
동작 방식
- 프로그램을 실행하면 300x300 크기의 창이 나타나고, 다음과 같은 요소가 표시됩니다:
- 텍스트 입력창(플레이스홀더: "텍스트를 입력하세요")
- "출력" 버튼
- 빈 레이블(초기에는 텍스트 없음)
- 사용자가 입력창에 텍스트를 입력하고 "출력" 버튼을 클릭하면, 입력한 텍스트가 레이블에 파란색으로 표시됩니다.
- 사용자가 새로운 텍스트를 입력하고 버튼을 다시 클릭하면, 레이블의 텍스트가 새 입력 내용으로 업데이트됩니다.
코드의 주요 구성 요소
1. 입력창 (`CTkEntry`)
- 사용자가 텍스트를 입력할 수 있는 필드를 제공합니다.
- `entry.get()`을 통해 입력된 텍스트를 가져옵니다.
2. 버튼 (`CTkButton`)
- "출력" 버튼은 클릭 시 `display_input` 함수를 호출하여 입력된 텍스트를 레이블에 표시합니다.
3. 레이블 (`CTkLabel`)
- 초기에는 빈 텍스트로 시작하며, 버튼 클릭 시 입력된 텍스트를 파란색으로 표시합니다.
- `label.configure`를 사용하여 텍스트와 색상을 동적으로 변경합니다.
4. 창 관리
- `CTk()`로 생성된 창은 `mainloop()`를 통해 사용자 입력을 처리하고 GUI를 유지합니다.
사용 예시
- 사용자가 입력창에 "안녕하세요"를 입력하고 "출력" 버튼을 클릭하면, 창 하단에 "안녕하세요"가 파란색으로 표시됩니다.
- 다시 "좋은 아침"을 입력하고 버튼을 클릭하면, 레이블이 "좋은 아침"으로 업데이트됩니다.
이 프로그램은 간단한 사용자 입력 처리와 GUI 출력 기능을 보여주는 예제로, `customtkinter`의 기본 위젯(입력창, 버튼, 레이블) 사용법을 잘 보여줍니다.
▣ 프로그램 코드
import customtkinter as ctk
def display_input():
user_input = entry.get()
label.configure(text=user_input, text_color="blue")
# Create the main window
root = ctk.CTk()
root.title("Input Display")
root.geometry("300x300")
# Create and place the entry field
entry = ctk.CTkEntry(master=root, placeholder_text="텍스트를 입력하세요")
entry.place(relx=0.5, rely=0.3, anchor="center")
# Create and place the button
button = ctk.CTkButton(master=root, text="출력", command=display_input)
button.place(relx=0.5, rely=0.5, anchor="center")
# Create and place the label
label = ctk.CTkLabel(master=root, text="")
label.place(relx=0.5, rely=0.7, anchor="center")
# Start the main loop
root.mainloop()
1. 라이브러리 임포트
import customtkinter as ctk
- customtkinter 라이브러리를 ctk라는 별칭으로 가져옵니다.
- customtkinter는 Tkinter를 기반으로 한 현대적인 스타일의 GUI 라이브러리로, 버튼, 입력창, 레이블 등의 위젯을 제공합니다.
2.입력 텍스트 표시 함수
def display_input():
user_input = entry.get()
label.configure(text=user_input, text_color="blue")
- display_input 함수는 "출력" 버튼 클릭 시 호출됩니다.
- entry.get(): 입력창(entry)에 사용자가 입력한 텍스트를 가져옵니다.
- label.configure(text=user_input, text_color="blue"): 레이블의 텍스트를 사용자가 입력한 내용(user_input)으로 변경하고, 텍스트 색상을 파란색(blue)으로 설정합니다.
3. 메인 창 생성
root = ctk.CTk()
root.title("Input Display")
root.geometry("300x300")
- ctk.CTk(): 메인 창 객체(root)를 생성합니다.
- root.title("Input Display"): 창의 제목을 "Input Display"로 설정합니다.
- root.geometry("300x300"): 창의 크기를 300x300 픽셀로 지정합니다.
4. 텍스트 입력창 생성 및 배치
entry = ctk.CTkEntry(master=root, placeholder_text="텍스트를 입력하세요")
entry.place(relx=0.5, rely=0.3, anchor="center")
- ctk.CTkEntry: 텍스트 입력창을 생성합니다.
- master=root: 입력창이 root 창에 속하도록 설정합니다.
- placeholder_text="텍스트를 입력하세요": 입력창에 회색으로 표시되는 안내 텍스트(플레이스홀더)를 설정합니다.
- place(relx=0.5, rely=0.3, anchor="center"): 입력창을 창의 가로 중심(50%)과 세로 30% 위치에 중앙 정렬로 배치합니다. 상대 좌표(relx, rely)를 사용해 창 크기 변화에 따라 위치가 유지됩니다.
5. 버튼 생성 및 배치
button = ctk.CTkButton(master=root, text="출력", command=display_input)
button.place(relx=0.5, rely=0.5, anchor="center")
- ctk.CTkButton: "출력" 텍스트가 적힌 버튼을 생성합니다.
- master=root: 버튼이 root 창에 속하도록 설정합니다.
- text="출력": 버튼에 표시될 텍스트를 설정합니다.
- command=display_input: 버튼 클릭 시 display_input 함수를 호출하도록 연결합니다.
- place(relx=0.5, rely=0.5, anchor="center"): 버튼을 창의 가로 중심(50%)과 세로 중심(50%)에 중앙 정렬로 배치합니다.
6. 레이블 생성 및 배치
label = ctk.CTkLabel(master=root, text="")
label.place(relx=0.5, rely=0.7, anchor="center")
- ctk.CTkLabel: 텍스트를 표시할 레이블을 생성합니다.
- master=root: 레이블이 root 창에 속하도록 설정합니다.
- text="": 초기에는 빈 텍스트로 설정하여 아무 내용도 표시되지 않도록 합니다.
- place(relx=0.5, rely=0.7, anchor="center"): 레이블을 창의 가로 중심(50%)과 세로 70% 위치에 중앙 정렬로 배치합니다.
7. 메인 루프 실행
root.mainloop()
mainloop(): GUI 프로그램을 실행하여 창을 화면에 표시하고, 사용자 입력(텍스트 입력, 버튼 클릭 등)을 처리합니다. 프로그램이 종료될 때까지 창을 유지합니다.
특징
- 상대 좌표 배치: place 메서드의 relx, rely를 사용해 위젯(입력창, 버튼, 레이블)을 창 크기에 상대적으로 배치하여 창 크기 변화에 유연하게 대응합니다.
- 동적 텍스트 업데이트: 레이블의 configure 메서드를 사용해 버튼 클릭 시마다 입력된 텍스트를 동적으로 업데이트합니다.
- 파란색 텍스트: 출력된 텍스트는 text_color="blue"로 파란색으로 표시됩니다.
- 간단한 인터페이스: 최소한의 위젯(입력창, 버튼, 레이블)으로 간결한 GUI를 제공합니다.
사용 예시
- 입력창에 "테스트" 입력 → "출력" 버튼 클릭 → 레이블에 "테스트"가 파란색으로 표시.
- 입력창에 "새로운 입력" 입력 → "출력" 버튼 클릭 → 레이블이 "새로운 입력"으로 업데이트.
이 코드는 customtkinter의 기본 위젯과 이벤트 처리(버튼 클릭, 텍스트 입력)를 활용한 간단한 GUI 프로그램의 예제입니다.
by korealionkk@gmail.com
