Q:

How to properly position widgets with .pack in tkinker?

I'm working on a project for my class in college, trying to make a tkinker GUI for something, but am having trouble getting the positioning right in it.
Here is my code:
from tkinter import *
from sys import exit

def button_func():
        print("Test")

class TestClient(Frame):
    def __init__(self, master):
        Frame.__init__(self, master)
        self.pack()

        w = Listbox(width=20,height=24)
        w.insert(1,"WoW")
        w.pack(side=LEFT)
        w = Text(width=60)
        w.pack(side=LEFT)
        w = Listbox(width=20,height=24)
        w.insert(1,"Hi")
        w.pack(side=RIGHT)

        w = Button(self, text="Start", width=10,padx=10,pady=10, command=button_func)
        w.pack(side=LEFT)
        w = Button(self, text="Change Room", width=10,padx=10,pady=10, command=button_func)
        w.pack(side=LEFT)
        w = Button(self, text="Change Room", width=10,padx=10,pady=10, command=button_func)
        w.pack(side=LEFT)
        w = Button(self, text="FIGHT", width=10,padx=10,pady=10, command=button_func)
        w.pack(side=LEFT)
        w = Button(self, text="PvP FIGHT", width=10,padx=10,pady=10, command=button_func)
        w.pack(side=LEFT)
        w = Button(self, text="Loot", width=10,padx=10,pady=10, command=button_func)
        w.pack(side=LEFT)
        w = Button(self, text="Leave", width=10,padx=10,pady=10, command=button_func)
        w.pack(side=LEFT)

        stats = Listbox(width= 20)
        stats.insert(1,"health:")
        stats.pack(side=BOTTOM)

root = Tk()
root.title = "Test program"
tw = TestClient(root)
root.mainloop()

The problem is that I want the top buttons to be below the text and listbox widgets and the listbox labeled health to be below that, I'v tried packing them to top and bottom, but neither work and I can't find a soulution on google or here, does anyone know how i would go about this?
P.S. Sorry if the indentations bad, first time here and I wasn't sure how to paste the code without messing up the indentation.

A:

See below for rough idea:
from tkinter import *
from sys import exit

def button_func():
        print("Test")

class TestClient(Frame):
    def __init__(self, master):
        Frame.__init__(self, master)
        self.pack()

        for n in range(3):
            self.grid_rowconfigure(n, weight=1)

        for n in range(8):
            self.grid_columnconfigure(n, weight=1)

        lb1 = Listbox(self, width=20,height=24)
        lb1.insert(1,"WoW")
        lb1.grid(row=0, column=0, columnspan=2, sticky='news')

        t1 = Text(self, width=60)
        t1.grid(row=0, column=3, columnspan=3)

        lb2 = Listbox(self, width=20,height=24)
        lb2.insert(1,"Hi")
        lb2.grid(row=0, column=6, columnspan=2, sticky='news')

        b1 = Button(self, text="Start", width=10,padx=10,pady=10, command=button_func)
        b1.grid(row=1, column=0)

        b2 = Button(self, text="Change Room", width=10,padx=10,pady=10, command=button_func)
        b2.grid(row=1, column=1)

        b3 = Button(self, text="Change Room", width=10,padx=10,pady=10, command=button_func)
        b3.grid(row=1, column=3)

        b3 = Button(self, text="FIGHT", width=10,padx=10,pady=10, command=button_func)
        b3.grid(row=1, column=4)

        b4 = Button(self, text="PvP FIGHT", width=10,padx=10,pady=10, command=button_func)
        b4.grid(row=1, column=5)

        b5 = Button(self, text="Loot", width=10,padx=10,pady=10, command=button_func)
        b5.grid(row=1, column=6)

        b6 = Button(self, text="Leave", width=10,padx=10,pady=10, command=button_func)
        b6.grid(row=1, column=7)

        stats = Listbox(self, width= 20)
        stats.insert(1,"health:")
        stats.grid(row=2, column=0, columnspan=8, sticky='news')

root = Tk()
root.title = "Test program"
tw = TestClient(root)
root.mainloop()

