为什么拥有多个实例被认为是不好的Tk?
Tkinter只是围绕导入Tk库的嵌入式Tcl解释器的python包装器。创建根窗口时,将创建Tcl解释器的实例。
每个Tcl解释器都是一个隔离的沙箱。一个沙箱中的对象无法与另一个沙箱中的对象进行交互。最常见的表现是
StringVar在一个解释器中创建的在另一个解释器中不可见。窗口小部件也是如此-您不能在一个解释器中创建窗口小部件,而在另一个解释器中将其作为父窗口小部件。
从技术角度来看,没有理由不能同时拥有两个实例Tk。对此的建议是因为实际上很少需要两个或多个不同的Tcl解释器,并且它会引起初学者难以理解的问题。
第二个代码段是否被认为更好一些,还是遇到了与第一个代码相同的条件?
在不知道您要达到的目标的情况下,不可能说出问题中的第二个例子是否更好。可能再好不过了,因为您再一次很少实际需要两个实例。
最好的解决方案是99.9%的时间是为Tk程序的整个生命周期创建一个实例。很简单,这就是设计使用tkinter和底层Tcl / Tk解释器的方式。



