Python 3.x Python,无法在内部使用几何体管理器包

Python 3.x Python,无法在内部使用几何体管理器包,python-3.x,tkinter,geometry,anaconda,Python 3.x,Tkinter,Geometry,Anaconda,安装Anaconda后,我出现了几个错误。 当我运行一个程序时,我会得到以下信息: TclError: cannot use geometry manager pack inside . which already has slaves managed by grid 该程序是使用Python3.3编写的。Anaconda版本适用于3.4。但我认为3.3和3.4之间没有任何语法差异。 我搜索了一下,找不到任何解决此错误的方法。 我甚至不知道这是什么意思 谢谢。如果在同一主窗口中混合使用pack

安装Anaconda后,我出现了几个错误。 当我运行一个程序时,我会得到以下信息:

TclError: cannot use geometry manager pack inside . which already has slaves managed by grid
该程序是使用Python3.3编写的。Anaconda版本适用于3.4。但我认为3.3和3.4之间没有任何语法差异。 我搜索了一下,找不到任何解决此错误的方法。 我甚至不知道这是什么意思


谢谢。

如果在同一主窗口中混合使用
pack()
grid()
,可能会发生此错误。根据该报告,这是一个坏主意:

警告:切勿在同一主窗口中混合网格和包装。编程 你会很高兴地用你的余生来谈判 两位经理都满意的解决方案。与其等待,不如杀了他 应用程序,然后再看看您的代码。常见的错误 就是对一些小部件使用了错误的父级

例如,此代码适用于Python3.3.x,但不适用于Python3.4.x(抛出您提到的错误):

这段代码不适用于两个Python版本:

from tkinter import *
root = Tk()

Label(root, text="First").grid(row=0)
Label(root, text="Second").pack()

root.mainloop()

要避免这种情况,请对给定父对象的所有子对象仅使用一个几何体管理器,例如
grid()

该错误表示您正在执行以下操作:

widget1 = tk.Label(root, ...)
widget2 = tk.Label(root, ...)

widget1.grid(...)
widget2.pack(...)
不能在具有相同父级的小部件上同时使用pack和grid。它可能适用于tkinter的一些旧版本,但前提是你运气好。解决方案是直截了当的:对于共享同一父窗口的所有窗口小部件,切换到仅使用网格或仅使用包

代码似乎在一个版本中工作,但在另一个版本中不工作,因为较新版本使用了较新版本的tkinter。Tkinter过去没有发出警告——它会试图继续运行,通常会带来灾难性的后果。该计划是否有效取决于许多因素。通常程序会冻结并使用接近100%的cpu,有时会工作,有时会工作,直到您调整窗口大小。不管怎样,这是任何版本的Tkinter都不应该做的事情

widget1 = tk.Label(root, ...)
widget2 = tk.Label(root, ...)

widget1.grid(...)
widget2.pack(...)