Использование поля ввода данных из предыдущего сеанса Tkinter - PullRequest
0 голосов
/ 13 февраля 2012

Мне нужно создать приложение с графическим интерфейсом с 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» в поле ввода.Затем я хочу закрыть окно, перезапустить его и запись 'Value1' появится по умолчанию.Каждый сеанс должен отображать значение предыдущего сеанса (значение вводится вручную только в первый раз).Есть ли способ сделать это?

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

1 Ответ

2 голосов
/ 13 февраля 2012

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

 app_win.protocol("WM_DELETE_WINDOW", handler)

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

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

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

...