Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter 텍스트 위젯을 읽기 전용으로 만드는 방법

Tkinter 텍스트 위젯을 읽기 전용으로 만드는 방법

Tkinter로 GUI 애플리케이션을 개발하다 보면, 사용자가 텍스트 위젯(Text Widget)의 내용을 임의로 수정하지 못하도록 읽기 전용 상태로 만들어야 하는 경우가 있습니다. 이를 구현하는 방법은 매우 간단합니다. 텍스트 위젯의 state 옵션을 DISABLED로 설정하기만 하면 됩니다.

state가 DISABLED로 변경되면 해당 위젯은 즉시 고정되어 더 이상 키보드 입력을 받지 않으며, 결과적으로 읽기 전용 모드처럼 동작하게 됩니다.

아래 예제에서는 텍스트 위젯과 함께 '비활성화(Disable)' 버튼을 배치하여, 버튼을 클릭하는 순간 텍스트 위젯이 바로 비활성화되도록 구현했습니다.

예제 코드

from tkinter import *

# 윈도우 인스턴스 생성
win = Tk()

# 윈도우 크기 설정
win.geometry("700x400")

# 텍스트 위젯을 비활성화하는 함수
def disable_button():
text.config(state=DISABLED)

# 안내용 라벨
Label(win, text="Type Something", font=('Helvetica bold', 25),
fg="green").pack(pady=20)

# 텍스트 위젯 생성
text = Text(win, height=10, width=40)
text.pack()

# 비활성화 버튼 생성
Button(win, text="Disable", command=disable_button,
fg="white", bg="black", width=20).pack(pady=20)

win.mainloop()

실행 결과

위 코드를 실행하면 화면에 텍스트 입력 영역과 'Disable' 버튼이 함께 나타납니다. 처음에는 텍스트 위젯에 자유롭게 내용을 입력할 수 있습니다.

Tkinter 텍스트 위젯을 읽기 전용으로 만드는 방법

그러나 'Disable' 버튼을 클릭하면 텍스트 위젯이 비활성화되어 커서가 깜빡이지 않고, 어떤 내용도 더 이상 입력할 수 없게 됩니다. 이 시점부터 위젯은 완전한 읽기 전용 상태로 전환됩니다.

참고: 다시 활성화하는 방법

비활성화된 위젯을 다시 편집 가능한 상태로 되돌리고 싶다면, 동일한 config 메서드를 사용해 state 옵션을 NORMAL로 설정하면 됩니다.

text.config(state=NORMAL)

이처럼 state 옵션 하나만으로 텍스트 위젯의 입력 가능 여부를 손쉽게 제어할 수 있으므로, 로그 출력 창이나 안내 문구 표시 등 사용자 입력이 필요 없는 화면을 만들 때 유용하게 활용할 수 있습니다.