pack()
, grid()
и place()
- это три способа размещения виджетов в окне (или в другом виджете).
Если вы используете grid()
с некоторым виджетом, то не используйте pack()
илиplace()
.
Документ на effbot.org: сетка , упаковка , место
Я удалил все .pack()
за исключением frame.pack()
и получите почти то, что вы ожидали.

Теперь виджеты должны быть выровнены по левому краю ('west'
) с помощью sticky='w'
И после добавления второго Frame
я получил

Код:
from tkinter import *
class PayrollSummary:
def __init__(pay):
window = Tk()
window.title("Employee Payroll")
#Add Frame 1
frame1 = Frame(window)
frame1.pack()
#Add ReadFile Button
btReadFile = Button(frame1, text = "Read File")
#Add ShowPayroll Button
btShowPayroll = Button(frame1, text = "Show Payroll")
#Add FindEmployee by Name Button
btFindEmployee = Button(frame1, text = "Find Employee by Name")
#Add Highest Radio Button
rbHigh = Radiobutton(frame1, text = "Highest")
#Add Lowest Radio Button
rbLow = Radiobutton(frame1, text ="Lowest")
#Add FindEmployee by Amount Button
btFindEmployee_A = Button(frame1, text = "Find Employee by Amount")
#Add WriteOutput Button
btOutput = Button(frame1, text = "Write Output to File")
#Add Cancel Button
btCancel = Button(frame1, text = "Cancel")
btReadFile.grid(row = 1, column = 2, sticky='w')
btShowPayroll.grid(row = 2, column = 2, sticky='w')
btFindEmployee.grid(row = 2, column = 4, sticky='w')
rbHigh.grid(row = 3, column = 2, sticky='w')
rbLow.grid(row = 3, column = 4, sticky='w')
btFindEmployee_A.grid(row = 3, column = 6, sticky='w')
btOutput.grid(row = 4, column = 2, sticky='w')
btCancel.grid(row = 4, column = 4, sticky='w')
#Add Frame 2
frame2 = Frame(window, bg='red')
frame2.pack(fill='both') # try without `fill`
label2 = Label(frame2, text='Label in bottom Frame', bg='green')
label2.pack()
window.mainloop()
PayrollSummary()