Не очень понятно, что вы хотите сделать с рамкой. Однако я могу сказать вам, что элементы в GUI являются иерархическими. Поэтому, если вы хотите разделить на два фрейма, вы можете сделать:
main_frame = Frame(my_window)
main_frame.grid(row=0, column=0, sticky="nswe")
left_frame = Frame(main_frame)
left_frame.grid(row=0, column=0, sticky="nswe")
# Button added just to see that there is a left frame, otherwise it will shrink
button_object = Button(left_frame, text="My Button")
button_object.grid(row=0, column=0)
right_frame = Frame(main_frame)
right_frame.grid(row=0, column=1, sticky="nswe")
listbox_object = Listbox(right_frame)
listbox_object2 = Listbox(right_frame)
listbox_object.grid(row=0, column=0)
listbox_object2.grid(row=0, column=2)
scrollbar_object = Scrollbar(right_frame)
scrollbar_object2 = Scrollbar(right_frame)
scrollbar_object.grid(row=0, column=1, sticky='ns')
scrollbar_object2.grid(row=0, column=3, sticky='ns')
Обратите внимание, что я добавил глобальный main_frame
для инкапсуляции всего, так как это лучше, чем работать напрямую с Tk root .
Наконец, если вы хотите более точно спроектировать свой интерфейс, вам нужно будет использовать columnconfigure
и rowconfigure
для управления тем, как ваш интерфейс разделяет неиспользуемое пространство, например
main_frame.columnconfigure(0, weight=3)
main_frame.columnconfigure(1, weight=1)
чтобы сообщить вашему интерфейсу, что 3/4 оставшегося горизонтального пространства относится к left_frame (столбец 0 main_frame) и 1/4 к right_frame (столбец 1 main_frame)
В целом многие вещи не очень интуитивны с GUI дизайном. В вашем случае я предлагаю использовать параметр bg
при отладке:
main_frame = Frame(my_window, bg="BLUE")
left_frame = Frame(main_frame, bg="RED")
right_frame = Frame(main_frame, bg="GREEN")
, чтобы вы ясно видели, как ваша программа разделяет пространство при изменении размера окна.