как изменить текст записи, когда я нажимаю на запись

У меня есть этот начальный класс:

class my_entry(Entry):
def __init__(self,the_window):
    Entry.__init__(self,the_window)
    def changeText(Event):
        self["text"]="the new text"
        print("text changed")
    self.bind("<Button-1>", changeText)

Теперь, когда я нажимаю на запись, она печатает: text changed, но текст не меняется...

У меня много записей, поэтому я не могу использовать set как:my_entry1.set("new text") для каждой записи

как я могу изменить текст записи из класса?


person daniel cohen    schedule 29.03.2020    source источник
comment
Отвечает ли это на ваш вопрос? Обновление текста в записи (Tkinter). Ознакомьтесь с виджетом входа Tkinter.   -  person stovfl    schedule 29.03.2020
comment
как я уже сказал, у меня много записей, поэтому я хочу одну функцию для всех из них или сделать ее из класса   -  person daniel cohen    schedule 30.03.2020
comment
много записей... одна функция: <entry>.bind(... обратные вызовы работают со многими виджетами, как вы получили ссылку от event.widget: прочитайте События и привязки   -  person stovfl    schedule 30.03.2020
comment
Ответ можно найти в легкодоступной документации. Прочтите о методах insert и delete виджета ввода, а также о том, что объект event предоставляет в связанных функциях.   -  person Bryan Oakley    schedule 30.03.2020


Ответы (1)


попробуйте сделать это:

class my_entry(Entry):
    def __init__(self,the_window):
        Entry.__init__(self,the_window)
        def changeText(Event):
            self.delete(0,END)
            self.insert(0,"new text")
            print("text changed")
        self.bind("<Button-1>", changeText)
person Itamar Shubin    schedule 29.03.2020