Все ваши виджеты расположены в нужных местах. Вам нужно только передать несколько параметров, в основном sticky
direction:
from tkinter import *
class Init(object):
def __init__(self):
root.title('Sample')
root.geometry('700x300')
MainFrame()
DictionaryFrame()
class MainFrame(object):
def __init__(self):
self.txtareaframe = Frame(root)
self.txtareaframe.grid(row=1, column=0, columnspan=2, sticky="nesw") #1
self.scroll = Scrollbar(self.txtareaframe)
self.scroll.pack(side=RIGHT, fill=Y)
self.txtarea = Text(self.txtareaframe, wrap=WORD, yscrollcommand=self.scroll.set, height=10, width=50)
self.txtarea.pack(fill="both",expand=True) #2
self.scroll.config(command=self.txtarea.yview)
class DictionaryFrame(object):
def __init__(self):
self.dictionaryframe = Frame(root)
self.dictionaryframe.grid(row=1, column=2, columnspan=2, sticky="w") #3
self.emptylbl = Label(self.dictionaryframe, text='')
self.emptylbl.grid(row=1, column=3, padx=50)
self.dictionarylbl = Label(self.dictionaryframe, text='Dictionary: ')
self.dictionarylbl.grid(row=1, column=4, sticky="w")
self.dictionarylist = Listbox(self.dictionaryframe)
self.dictionarylist.grid(row=2, column=4, columnspan=2, sticky="ew") #4
self.searchlbl = Label(self.dictionaryframe, text='Search: ')
self.searchlbl.grid(row=3, column=4, sticky="w")
self.searchinput = Entry(self.dictionaryframe, width=25)
self.searchinput.grid(row=3, column=5)
root = Tk()
Init()
root.mainloop()