Tkinter Python: Как удалить входной курсор из TTK.entry?
Вопрос
У меня есть экземпляр TTK.entry. Пользователь нажимает на него. У меня есть связанное событие. В зависимости от некоторого состояния я либо хочу, чтобы входной курсор появился и позволит печатать или По сути, я хочу игнорировать щелчок, а не у входного курсора появляется в TTK.entry. я нет Хотите использовать чтенные или отключенные состояния.
Манипулирующий фокус не влияет.
Решение 2
После траления документации TTK это делает трюк:
ttk.Style().map("TEntry",
foreground=[('disabled', 'black')],
fieldbackground=[('disabled','white')]
)
widget['state'] = 'disabled'
Другие советы
Вот класс, который делает то, что вы спрашиваете.
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
Примечание. Будьте осторожны при переосмыслении конвенций GUI. Наличие чего-то, что выглядит с включенным действием, отключено, может быть запутано для пользователей. Так что не измените это, если у вас нет веских причин.