0

多くのテキスト フィールド エントリを必要とする GUI アプリケーションを Tkinter で作成する必要があります。ユーザーはすべてのエントリを入力し、[実行] ボタンを使用して特定の機能を実行する必要があります。私がやりたいことは、ユーザーが毎回すべてのデータを何度も入力する必要がないように、前のセッションからユーザーが入力したすべてのテキストデータを復元する機能を含めることです。entry_box.set('desired string') オプションを使用できますが、これは静的であり、以前の GUI セッションは考慮されません。

たとえば、次のスクリプトでは:

#!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()

この GUI を実行し、入力ボックスに「Value1」と入力します。次に、ウィンドウを閉じて再実行すると、エントリ「Value1」がデフォルトで表示されます。各セッションには、前のセッションの値が表示されます (値は最初の 1 回のみ手動で入力されます)。これを行う方法はありますか?

私の場合、ユーザーは GUI を再実行するたびに約 10 のフィールドのうち 1 つまたは 2 つのフィールドを変更するだけでよいため、これは非常に便利です。

4

1 に答える 1

2

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()

これで、スクリプトを再起動したときにファイルを読み取ってテキストを設定するようにプログラムを変更できます。

于 2012-02-13T15:52:39.123 に答える