0
我有一個調用此類的drawWorld()函數的外部腳本。 我希望繪圖顯示1-2秒,然後關閉,控件返回到主腳本。 我可以設法讓窗口消失與線Tkinter窗口將被關閉並且控制流將自動返回
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();打印「結束」 我無法進入打印行。 我想讓tk窗口彈出並在1s後死亡。 – Alvin
您的縮進在您的示例中不正確。 –