(抱歉英语不好) 你好我是编程新手。我在使用“after”方法时遇到了一些问题,我使用了Tkinter
所以,我想要一个函数来执行代码的一部分,然后延迟其余部分,但它只是冻结并立即执行所有内容
def click1 ():
entered_text=textentry.get()
textentry.delete(0, "end")
try:
rasp1 = inputs[entered_text]
except:
rasp1 = "Hello, " + entered_text + "!"
textentry.destroy()
enter.destroy()
tk.Label(root,
text=entered_text + " <<",
fg="white",
bg="#333333",
#aspect=1000,
justify="left",
font=courier) .grid(column=1, sticky="e")
root.after(3000)
Rasp1 = tk.Message(root,
text=">> " + rasp1,
fg="#00ff00",
bg="#333333",
aspect=800,
justify="left",
font=courier)
Rasp1.grid(column=1, sticky="w")
正如我在其他程序中看到的那样,我尝试将回调函数作为函数编写,但这会产生错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\Lib\lib-tk\Tkinter.py", line 1547, in __call__
return self.func(*args)
File "C:\Python27\Lib\lib-tk\Tkinter.py", line 596, in callit
func(*args)
File "C:\create\Jim(grid).exe.py", line 38, in click1
entered_text=textentry.get()
File "C:\Python27\Lib\lib-tk\Tkinter.py", line 2518, in get
return self.tk.call(self._w, 'get')
TclError: invalid command name ".31959040"
我猜你想要什么,但我认为下面的代码会有所帮助
您的after需要是
root.after(3000, callback)
。我已将Rasp1...
代码移动到函数do_after
中,这是在root.after执行3秒后由root调用的。after
的要点是它不会延迟GUI中任何内容的执行。它允许GUI的其余部分在程序延迟开始执行其回调时,对文本输入、单击等保持活动状态相关问题 更多 >
编程相关推荐