Я видел некоторые ответы на SO, однако это не кажется правильным решением для случая использования. В этом примере мне нужно удалить фокус, отключить запись и удалить его содержимое при нажатии на контрольную кнопку:
from tkinter import *
root = Tk()
def manage_entry():
if bool(var.get()) == False:
e.config(state = 'normal')
if bool(var.get()) == True:
e.delete(0, END)
e.config(state = 'disabled')
# this is not great, but removes focus when checkbutton selected
root.focus()
var = BooleanVar()
var_c = Checkbutton(root, text = 'Freeze entry', variable = var, command = manage_entry)
var_c.deselect()
var_c.pack()
e = Entry(root, width = 15)
e.pack()
root.mainloop()
При нажатии на контрольную кнопку фокус устанавливается на Tk (), который производит то, что мне нужно, но кажется неправильным использованием метода. Это наверняка обходной путь, но есть ли более правильный способ отключить фокус? Я также пробовал e.config(takefocus = 0)
, но это не убирало фокус