Вот класс, который делает то, что вы просите.
class MyEntry(Entry):
def disable(self):
self.__old_insertontime = self.cget('insertontime')
self.config(insertontime=0)
self.bind('<Key>', lambda e: 'break')
def enable(self):
self.unbind('<Key>')
if self.cget('insertontime') == 0:
self.config(insertontime=self.__old_insertontime)
Однако, поскольку ваша реальная проблема в том, что вы не хотите, чтобы отключенная запись выглядела отключенной, просто установите цвета disabledbackground
и disabledforground
, чтобы они соответствовали цветам background
и forground
. Если вам нужно это свернуть в класс, сделайте это так:
class MyEntry(Entry):
def __init__(self, *args, **kwds):
Entry.__init__(self, *args, **kwds)
self.config(disabledbackground=self.cget('background'))
self.config(disabledforeground=self.cget('foreground'))
И используйте это так:
e = MyEntry(root)
e.config(state=DISABLED) # or state=NORMAL
Примечание. Будьте осторожны при повторном изобретении соглашений графического интерфейса. Если что-то выглядит так, что действие отключено, это может сбить с толку пользователей. Так что не меняйте это, если у вас нет веских причин.