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

Tkinter 텍스트 위젯에서 복사·붙여넣기·백스페이스 비활성화하는 방법

Tkinter의 Text 위젯은 여러 줄의 사용자 입력을 받을 수 있는 위젯으로, 텍스트를 입력하고 복사, 붙여넣기, 삭제 같은 다양한 편집 작업을 수행할 수 있습니다. 하지만 경우에 따라 특정 단축키나 키 동작을 막아야 할 필요가 있습니다.

Text 위젯에서 복사(Ctrl+C), 붙여넣기(Ctrl+V), 백스페이스(BackSpace) 기능을 비활성화하려면 해당 키 이벤트를 이벤트 핸들러에 바인딩한 뒤, lambda를 사용해 문자열 "break"를 반환하면 됩니다. "break"를 반환하면 Tkinter가 해당 이벤트에 대한 기본 동작(클래스 바인딩)을 실행하지 않으므로, 결과적으로 그 키 입력이 무시됩니다.

예제 코드

# 필요한 라이브러리 임포트
from tkinter import *

# Tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()
win.geometry("700x350")

# 텍스트 위젯 생성
text = Text(win, font="Calibri, 14")
text.pack(fill=BOTH, expand=True)

# 키 이벤트를 이벤트 핸들러에 바인딩
text.bind('', lambda _: 'break')
text.bind('', lambda _: 'break')
text.bind('', lambda _: 'break')

win.mainloop()

실행 결과

위 코드를 실행하면 텍스트 위젯이 포함된 윈도우가 나타나며, 사용자는 자유롭게 텍스트를 입력할 수 있습니다.

다만 <BackSpace> 키나 Ctrl+C, Ctrl+V 조합 키는 동작하지 않습니다. 즉, 입력된 텍스트를 복사하거나 붙여넣거나 지우는 것이 모두 차단됩니다.

추가 팁

마우스 우클릭 컨텍스트 메뉴를 통한 복사·붙여넣기까지 완전히 차단하려면, 마우스 이벤트(<Button-3>)에 대해서도 같은 방식으로 바인딩을 추가하면 됩니다. 또한 읽기 전용으로 만들고 싶다면 state="disabled" 옵션을 사용하는 방법도 있지만, 이 경우 사용자 입력 자체가 막히므로 상황에 맞게 선택하는 것이 좋습니다.