Использование данных поля ввода из предыдущего сеанса Tkinter

Мне нужно создать приложение с графическим интерфейсом пользователя с Tkinter, для которого требуется много записей в текстовых полях. Пользователь должен ввести все записи, а затем использовать кнопку «Выполнить» для выполнения определенной функции. Я хочу сделать следующее: включить функцию, которая восстанавливает ВСЕ текстовые данные, введенные пользователем из предыдущего сеанса, чтобы пользователю не приходилось каждый раз вводить все данные снова и снова. Я мог бы использовать параметр entry_box.set ('желаемая строка'), но он статичен и не учитывает предыдущие сеансы графического интерфейса.

Например, в следующем скрипте:

#!usr/bin/env python
from Tkinter import *

# Define input retrieve function for application input
def retrieve_text():
    print(app_entry.get())

if __name__ == "__main__":

    # Create window (or form)
    app_win = Tk()

    # Create label
    app_label = Label(app_win, text="Enter value")
    app_label.pack()

    # Create entry box
    app_entry = Entry(app_win)
    app_entry.pack()

    # Create button
    app_button = Button(app_win, text="Print Value", command=retrieve_text)
    app_button.pack()

    # Initialize GUI loop
    app_win.mainloop()

Я запускаю этот графический интерфейс и ввожу «Значение1» в поле ввода. Затем я хочу закрыть окно, повторно запустить его, и запись «Значение1» появится по умолчанию. В каждом сеансе должно отображаться значение из предыдущего сеанса (значение вводится вручную только в первый раз). Есть какой-либо способ сделать это?

Это было бы очень полезно, потому что в моем случае пользователю нужно изменять только одно или два поля из примерно 10 каждый раз при повторном запуске графического интерфейса.


person prrao    schedule 13.02.2012    source источник


Ответы (1)


В вашем main добавьте обработчик для закрытия события, используя this.

 app_win.protocol("WM_DELETE_WINDOW", handler)

Теперь при каждом нажатии кнопки закрытия будет вызываться функция handler.

def handler():
    f = open("backup", "w")
    f.write(app_entry.get())
    f.close()
    app_win.quit()

Теперь вы можете изменить свою программу для чтения файла и установки текста при перезапуске скрипта.

person Abhijeet Rastogi    schedule 13.02.2012