Есть ли какой-либо способ разместить сетку методов внутри фрейма?

#python #tkinter #spyder

#python #tkinter #spyder

Вопрос:

Я получаю эту ошибку при выполнении кода:

TclError: невозможно использовать сетку geometry manager внутри .!фрейма, в котором уже есть подчиненные устройства, управляемые pack.

 from tkinter import *
import tkinter as tk
my_window=tk()

frame_name=Frame(my_window)

label_first=Label(frame_name,text="First")
label_first.pack()

label_middle=Label(frame_name,text="Middle")
label_middle.pack()

label_surname=Label(frame_name,text="Surname")
label_surname.pack()

entry_first=Entry(frame_name)
entry_middle=Entry(frame_name)
entry_surname=Entry(frame_name)

button_submit_name=Button(frame_name,text="  Submit  ") 

label_first.grid(row=0,column=0)
label_middle.grid(row=1,column=0)
label_surname.grid(row=2,column=0)

entry_first.grid(row=0,column=1)
entry_middle.grid(row=1,column=1)
entry_surname.grid(row=2,column=1)

button_submit_name.grid(row=3,columnspan=2) 

frame_name.grid(row=0,column=0)

my_window.mainloop()
  

Комментарии:

1. в каждом виджете вы можете использовать только один менеджер геометрии ( grid , pack или place ) — отдельные виджеты могут использовать разные менеджеры геометрии.

Ответ №1:

Ошибка точно указывает вам, что не так: вы не можете использовать оба grid и pack с виджетами, у которых есть общий мастер.

Решение состоит в том, чтобы использовать один или другой для всех виджетов, которые используют один и тот же мастер или родительский элемент.