Существует специальная опция для фона и переднего плана, когда запись отключена: disabledbackground
и disabledforeground
. Таким образом, чтобы отключенная запись выглядела как обычная запись, вы можете использовать:
entry1.configure(disabledbackground="white", disabledforeground="black")
Чтобы по-прежнему иметь возможность выделять текст, вы можете использовать другую стратегию. Вместо того, чтобы устанавливать состояние как отключенное, используйте validatecommand
, чтобы запретить все изменения:
import tkinter as tk
def validate():
return False
root = tk.Tk()
vcmd = (root.register(validate))
entry1_var = tk.StringVar(root, value='Entry1')
entry1 = tk.Entry(root, textvariable=entry1_var, validatecommand=vcmd)
entry1.update()
entry1.configure(validate="key")
entry1.grid()
root.mainloop()
Единственное, на что нужно обратить внимание, это то, что когда вы принудительно редактируете, что не должно быть разрешено валидацией, например, с помощью entry1_var.set('text')
, валидация отключается (именно поэтому нам нужно entry1.update()
, чтобы активно установить текст до начала проверки). Таким образом, чтобы изменить текст, вам нужно отключить проверку, обновить текст и снова включить проверку, например:
entry1.configure(validate="none")
entry1_var.set("text")
entry1.configure(validate="key")