【发布时间】:2013-10-25 12:01:20
【问题描述】:
我有一个调用此类的 drawWorld() 函数的外部脚本。 我希望绘图显示 1-2 秒,然后关闭并且控件返回到主脚本。 我可以设法让窗口随着线条消失
root.after(1000, lambda: root.destroy())
但我无法将流程返回到主脚本。 我试过了
root.after(1000, lambda: root.quit())
但它不起作用。
这是我的 Tkinter 类代码:
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"我无法到达打印行。我希望tk窗口弹出并在1s后死亡。 -
您的示例中的缩进不正确。
标签: python window tkinter destroy quit