我正在使用after
创建延迟的回调。我注意到,尽管许多不同的对象都有一个after
方法,但尚不清楚在说after
或tk.Frame
上调用tk.Button
之间是否有区别。 / p>
无论您调用了什么对象after
,都可以期待完全相同的行为,所以我没有看到任何指南。看一下实现,似乎它只是在一个通用的窗口小部件基类中委托self.tk.call('after', ms, name)
,但这本身并不意味着所有子类的行为都相同。
如果我需要打电话给after
时手头有多个小部件,那么是否有理由选择一个小部件,还是可以期望完全相同的行为?
答案 0 :(得分:3)
我正在使用after创建延迟的回调。我注意到,尽管许多不同的对象都有after方法,但尚不清楚在对after调用tk.Frame或tk.Button之间是否有区别。
不,没有区别。您可以使用任何所需的小部件来调用const apiCall = new Promise(resolve => {
setTimeout(() => {
resolve('Data here')
}, 1000)
})
const asyncFunction = async () => {
const result = await apiCall
console.log(result)
}
asyncFunction()
,它的行为将完全相同。
看一下实现,似乎它只是在一个通用的小部件基类中委托给self.tk.call('after',ms,name),但这并不意味着行为是相同的对于所有子类。
实际上,是的。您将其称为小部件上的方法的事实是Tkinter实现的一个产物。在底层的tcl / tk库中,它只是一个函数调用,与任何小部件无关。