2012-02-13 3 views
0

많은 텍스트 필드 항목이 필요한 Tkinter로 GUI 응용 프로그램을 만들어야합니다. 사용자는 모든 항목을 입력 한 다음 '실행'버튼을 사용하여 특정 기능을 실행해야합니다. 내가하고 싶은 일은 이전 세션에서 사용자가 입력 한 모든 텍스트 데이터를 복원하는 기능을 포함하여 사용자가 매번 모든 데이터를 반복해서 입력 할 필요가 없도록하는 것입니다. entry_box.set ('desired string') 옵션을 사용할 수는 있지만 정적이며 이전 GUI 세션을 고려하지 않습니다. 다음 스크립트의 예를 들어이전 세션의 입력 상자 데이터 사용 Tkinter

:

#!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를 실행하고 입력 상자에 '값 1'을 입력합니다. 그런 다음 창을 닫고 다시 실행하고 'Value1'항목을 기본적으로 표시하려고합니다. 각 세션은 이전 세션의 값을 표시해야합니다 (이 값은 처음에만 수동으로 입력됩니다). 이 일을 할 수있는 방법이 있습니까?

필자의 경우 사용자가 GUI를 다시 실행할 때마다 약 10 개의 필드 중 하나 또는 두 개의 필드 만 변경하면되므로 매우 유용합니다.

답변

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

지금, 당신은 스크립트를 다시 시작할 때 파일 & 텍스트를 설정 읽을 수있는 프로그램을 수정할 수 있습니다.

+0

감사합니다. 이 메서드는 잘 작동합니다. – prrao