2014-10-02 82 views
1

解決此問題?我正在運行此代碼,窗口被創建,但在控制檯上出現錯誤消息。我認爲問題是「後」循環沒有終止,但窗口已經銷燬。執行時命令名稱無效(「after」腳本)

代碼:

import Tkinter as tk 
import time 

class App(): 
    def __init__(self): 
     self.root = tk.Tk() 
     self.label = tk.Label(text="") 
     self.label.pack() 
     self.update_clock() 
     self.root.mainloop() 

    def update_clock(self): 
     now = time.strftime("%H:%M:%S") 
     self.label.configure(text=now) 
     self.root.after(1000, self.update_clock) 

app=App() 

控制檯消息:

invalid command name "66120320callit" 
while executing 
"66120320callit" 
("after" script) 

對不起,我在第一篇小信息。我使用Spyder IDE,並在Spyder控制檯中看到錯誤,其中反覆運行我的代碼。我在Python bug跟蹤器中發現的這個錯誤的描述爲「wait_variable在出口處掛起」

+1

這很奇怪。它適用於我的機器。 (一旦我糾正了'def __init__'後面的行中的縮進) – Kevin 2014-10-02 20:28:34

+1

也適用於我! – user3885927 2014-10-02 20:45:05

回答

2

如果您銷燬該窗口,則可能會運行已經計劃好的任何「之後」作業。如果該窗口被銷燬並且該作業與已被刪除的小部件交互,則會出現此錯誤。

您可以在代碼周圍放置try並忽略這樣的錯誤,在嘗試配置它之前檢查該窗口是否存在,或者在主窗口被銷燬時放入一個處理程序以刪除任何掛起的「after」作業。

+1

如果你有一個手動退出按鈕,你可以在調用'root.destroy()'來殺死你的程序之前使用'after_cancel()'方法取消'after'方法。文檔在這裏:http://effbot.org/tkinterbook/widget.htm – 2016-08-07 20:21:35

-1

我有這個問題,因爲我的模塊被命名爲「安裝程序」,我也有一個setup.py文件。當調用setup.py some命令時,你會得到「無效命令名」somecommand'「。