Python,不能使用几何管理器包里面

Alv*_*lis 2 geometry tkinter python-3.x anaconda

安装Anaconda后我遇到了几个错误.当我运行程序时,我收到消息:

TclError: cannot use geometry manager pack inside . which already has slaves managed by grid
Run Code Online (Sandbox Code Playgroud)

该程序是使用Python 3.3编写的.Anaconda版本适用于3.4.但我不认为3.3和3.4之间存在任何语法差异.我搜索过,找不到任何解决此错误的方法.我甚至都不知道这意味着什么.

谢谢.

Nor*_*Cat 5

如果您混合pack()grid()在同一主窗口中,则会发生此错误.根据文档,这是一个坏主意:

警告:切勿在同一主窗口中混合网格和打包.Tkinter很乐意度过余生,试图协商一个管理人员都满意的解决方案.而不是等待,杀死应用程序,再看看你的代码.一个常见的错误是对某些小部件使用了错误的父级.

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

from tkinter import *
from tkinter import ttk

root = Tk()

mainframe = ttk.Frame(root)
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))

nb = ttk.Notebook(root)
nb.pack()

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

并且此代码不适用于两个Python版本:

from tkinter import *
root = Tk()

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

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

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