2014-02-22 3 views
1

3 개의 스크립트를 작성 했으므로 Tkinter에서 간단한 프런트 엔드 메뉴를 작성하고 있습니다. 스크립트를 개별적으로 사용하면 제대로 작동하고 종료되므로 문제가없는 것으로 알고 있습니다. 문제는 내 메뉴 (아래)에 있어야합니다.Python : Tkinter를 사용할 때 스크립트가 종료되지 않습니다.

메뉴에서 다른 스크립트를 호출하고 실행하는 도구 중 하나를 선택합니다. 스크립트가 멈추고 키보드에서 Enter 키를 누를 때까지 기다립니다. enter 키를 누르면 스크립트가 종료됩니다. 어떻게해야 입력하지 않으면 자동으로 종료 할 수 있습니까?

미리 감사드립니다.

from Tkinter import * 
import Tkinter 
import subprocess 

root = Tkinter.Tk() 
root.title("SimonsSoftware, 2014") 
root.geometry('255x200+200+200') 
text = Text(root) 
text.insert(INSERT, "Please select which tool\nyou wish to use...") 


def close_window(): 
    root.withdraw() 

def kill_window(): 
    root.destroy() 

def callDuff(): 
    print "Call back works" 
    subprocess.Popen("python duff.duplicateFileFinder\duff.py", shell=True) 
    kill_window() 

def callFibs(): 
    print "Call back works" 
    subprocess.Popen("python fibs.FileInvestigationBiteSize\\fibs.py", shell=True) 
    close_window() 

def callShift(): 
    print "Call back works" 
    subprocess.Popen("python shift.SimonsHashInfoFinderTool\shift.py", shell=True) 
    close_window() 


buttonOne = Tkinter.Button(root, text ="DUFF", relief=FLAT, command=callDuff) 
buttonTwo = Tkinter.Button(root, text ="FIBS", relief=FLAT, command=callFibs) 
buttonThree = Tkinter.Button(root, text ="SHIFT", relief=FLAT, command=callShift) 

buttonOne.pack() 
buttonTwo.pack() 
buttonThree.pack() 
text.pack() 
root.mainloop() 

답변

1

명시 적으로 프로세스를 대기하면 문제가 해결됩니다.

def callDuff(): 
    print "Call back works" 
    proc = subprocess.Popen("python duff.duplicateFileFinder\duff.py", shell=True) 
    #^^^^^^ 
    kill_window() 
    proc.wait() # <----- 

가 BTW, root.withdraw() 프로그램을 종료하지 않는 (subprocess.Popen.wait 사용). 기본 창을 숨기 만하면됩니다.

+0

root.withdraw()는 내가이 스크립트에 대해 사용하려고하지 않았던 내용이었습니다. 고마워. – BubbleMonster

관련 문제