Tkinter Text 위젯을 읽기 전용으로 만드는 방법

Jinku Hu 2023년1월30일
  1. Tkinter Text 를 읽기 전용으로 만들려면 Text State 를 disable 로 설정하십시오
  2. Tkinter Text 를 읽기 전용으로 만들기 위해 키 누름을 break 기능에 바인딩
Tkinter Text 위젯을 읽기 전용으로 만드는 방법

Tkinter Text 위젯을 읽기 전용으로 만드는 방법을 소개합니다.

  1. Text 상태를 disable로 설정하십시오
  2. 키를 누르면 break기능에 바인딩됩니다.

Tkinter Text 를 읽기 전용으로 만들려면 Text State 를 disable 로 설정하십시오

Text 위젯은 상태가 disable로 설정되면 읽기 전용이됩니다.

import tkinter as tk

root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0, "ABCDEF")
readOnlyText.configure(state="disabled")
readOnlyText.pack()

root.mainloop()

Text 위젯의 기본 상태는 NORMAL이며, 이는 사용자가 텍스트 내용을 편집, 추가, 삽입 또는 편집 할 수 있음을 의미합니다.

readOnlyText.configure(state="disabled")

읽기 전용으로 만들려면 Text 위젯 상태를 DISABLED 로 변경해야합니다. 해당 위젯 내에서 텍스트를 변경하려는 시도는 자동으로 무시됩니다.

경고
Text 위젯 컨텐츠를 업데이트하려면 상태를 disabled 에서 normal 로 변경해야합니다. 그렇지 않으면 읽기 전용으로 유지됩니다.

Tkinter Text 를 읽기 전용으로 만들기 위해 키 누름을 break 기능에 바인딩

breakText 위젯으로 리턴하는 함수에 키 스트로크를 바인딩하면 Text 가 읽기 전용이되는 것과 동일한 결과를 얻을 수 있습니다.

import tkinter as tk

root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0, "ABCDEF")
readOnlyText.bind("<Key>", lambda a: "break")
readOnlyText.pack()

root.mainloop()
주의

이 솔루션과 위의 솔루션의 차이점은 CTRL+C 가 작동하지 않는다는 것입니다. 내용을 편집하거나 복사 할 수 없음을 의미합니다.

CTRL+C 를 원한다면 CTRL+C 를 제외하고 Text 에 바인딩하는 함수를 제외해야합니다.

import tkinter as tk


def ctrlEvent(event):
    if 12 == event.state and event.keysym == "c":
        return
    else:
        return "break"


root = tk.Tk()
readOnlyText = tk.Text(root)
readOnlyText.insert(1.0, "ABCDEF")
readOnlyText.bind("<Key>", lambda e: ctrlEvent(e))
readOnlyText.pack()

root.mainloop()
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - Tkinter Text