이 클래스의 drawWorld() 함수를 호출하는 외부 스크립트가 있습니다. 도면을 1-2 초 동안 표시 한 다음 닫고 제어 도구가 기본 스크립트로 돌아 가기를 원합니다. 나는 윈도우 라인Tkinter 창이 닫히고 제어 흐름이 자동으로 반환됩니다.
root.after(1000, lambda: root.destroy())
사라하지만 메인 스크립트에 흐름을 반환 할 수 있도록 관리 할 수 있습니다. 나는
root.after(1000, lambda: root.quit())
을 시도했지만 작동하지 않습니다. 당신이 당신의 메인 프로그램이 바로 이것이다 썼다 질문에 대한 코멘트에서
from Tkinter import Tk, Canvas, Frame, BOTH
class World(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.parent.title("CliffWorld")
self.pack(fill=BOTH, expand=1)
canvas = Canvas(self)
canvas.create_rectangle(4, 4, 31, 31,
outline="#f11", fill="#1f1", width=1)
canvas.pack(fill=BOTH, expand=1)
def drawWorld():
root = Tk()
ex = World(root)
root.geometry("330x220+300+300")
root.after(1000, lambda: root.destroy())
root.after(1000, lambda: root.quit())
root.mainloop()
"메인 스크립트로 흐름을 되돌릴 수 없지만 작동하지 않습니다." 평균? 그것은 추락합니까? 프로그램이 멈 춥니 다? 오류 메시지가 나타 납니까? 전체 문제를 설명하는 최소한의 스크립트를 제공 할 수 있습니까?이 함수를 호출 한 다음 함수가 종료 될 때 계속 시도하는 절차 코드? –
주 스크립트는 drawWorld() 함수를 호출하므로 제어 흐름이 코드의이 부분으로 이동합니다. root.destroy()를 사용하여 창을 제거하고 작동하지만, tk 환경을 종료하고 나머지 스크립트를 실행하게하는 root.quit()은 그렇지 않습니다. 지정하지 않은 것에 대해 유감스럽게 생각하지만 나는 일하지 않는 것을 의미합니다. 기본적으로 수동으로 종료 할 때까지 열려 있습니다 (Ctrl-C). 내 외부 코드는 간단합니다 : 'import tkWorld tkWorld.drawWorld(); print "end"' 인쇄 라인에 연결할 수 없습니다. 1 초 후에 tk 창이 튀어 나오고 죽기를 바란다. – Alvin
예제에서 들여 쓰기가 잘못되었습니다. –