Родительский контейнер что это

от admin

Родитель – контейнер. Важное о прямых родительских обязанностях

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

Жизненное:

Вечер. Уставшая «как бы мама», воспитывающая дочь одна, возвращается с работы. Дома не убрано и она сразу же переходит на крик: «Сколько может это продолжаться! Трудно убрать?! Опять в телефоне сидела? У меня больше нет сил – где ремень?!». У нее правда нет сил, но причина – не в дочери, а в том, что она устала на работе, не справляется со своими обязанностями, чувствует себя плохой матерью (что отчасти соответствует действительности) и единственный человек, на которого она все может вылить – это ее десятилетняя дочка (на деле самостоятельная и неплохо справляющаяся с хозяйством пока мать на работе).

«Как бы мама» орет, дочь ей грубо отвечает (пытаясь защитить себя), мать орет сильнее, не выдерживает, шлепает ее. И хотя физически ей от этого немного легче (разрядилась), на душе еще более тошно – ко всем чувствам примешивается вина и стыд, с которыми мать не справляется, и вместо того, чтобы попросить прощения (стыдно вдвойне), начинает плакать (переходит из агрессора в жертву), обвиняя девочку в том, что та ее доводит. Дочь ее жалеет и успокаивает.

фото Adme.ru

Родителю необходимо заботиться не только о (а) физическом состоянии ребенка (обеспечивать ему возможность спать, есть, пить, двигаться, приучить к горшку), (б) интеллектуальном развитии (только без фанатизма), (в) социальном развитии ребенка (научить его особенностям поведения в социуме и правилам безопасности, НО И ЭМОЦИОНАЛЬНОМ РАЗВИТИИ. Причем эмоциональное развитие по значению я бы ставила до пункта «б» и «в», потому как писать и читать так или иначе к школе научаются практически все ментально здоровые дети, а вот понимать себя, регулировать свои чувства, обходиться со своей агрессией, тревогой, болью – способен далеко не каждый, даже вырастая.

Родителю не просто желательно, но необходимо заботиться об эмоциональном состоянии и развитии ребенка. Говоря полутерминологически, родитель должен обеспечить ребенку контейнер (порой путаем с «унитаз») для чувств. Я не люблю слово «должен», но в данном случае использую именно его, чтобы не отвертеться. И тот аргумент, что многие взрослые не могут/не умеют справляться не то, что с детскими эмоциональными переживаниями, но и с собственными – не оправдание. Не умеете – учитесь. Читайте книги, идите к психологу, прорабатывайте. Вы же кормите своего ребенка, даже если когда-то не умели готовить, вы покупаете готовую еду в конце концов, но даете ребенку поесть (иногда даже слишком настойчиво), потому что знаете: есть нужно, чтобы быть живым и физически здоровым. Чтобы быть психически живым и здоровым необходимо обеспечить ребенку возможность проживать/выливать/выплескивать свои эмоции, быть «контейнером» для его чувств, потому как своего собственного (внутреннего) контейнера у ребенка изначально нет.

В случае, если родитель не является «контейнером» для чувств ребенка, то ребенку чаще всего остается (а) закатить истерику, (б) подавить чувства (при этом они никуда не исчезают) (в) вылить чувства на кого-то другого (например, «оторваться» на собаке, кошке или ком-то более безопасном и слабом), (г) заболеть.

Вначале с ребенком просто что-то происходит (например, закипает злость), он кричит и колотит руками. Он не знает, что именно происходит и не может держать в себе. Ему нужно это чувство «отдать». Не потому что он не хочет придержать свою злость при себе, а потому что не может. Как не может сначала контролировать многие физиологические процессы. Ему нужно выплеснуть злость, «отдать» чувство, что значит — поместить его в «контейнер» и таким контейнером должен быть родитель.

Что значит быть хорошим «контейнером»?

Для того, чтобы в контейнер можно было бы что-то положить – в контейнере должно быть свободное место, правильно? Из чего следует пункт первый:

  1. Хороший контейнер – это контейнер, где есть свободное место. Говоря простым языком, если у вас самого внутри все кипит и «чаша переполнена», то вы не сможете принять эмоции вашего ребенка. И когда он кричит, швыряет вещи, истерит, то скорее всего, вашей реакцией будет либо ответный крик/истерика/встречная агрессия, либо собственные слезы бессилия. И в этом случае уже ребенок вынужден быть контейнером чувств «как бы родителя», а в сущности такого же растерянного/испуганного/беспомощного ребенка. Только у реального ребенка нет для этого ресурсов и ему приходится идти на неокрепших ногах, кое-как становится родителем собственному родителю, вбирая в себя его кипящие чувства. А поскольку справиться он с ними, переработать их, не может — нечем, то впоследствии он будет отыгрывать их в виде симптомов: болезней, агрессии, странностей поведения.
  2. Быть хорошим контейнером значит способность принять любое чувство ребенка. Обычно родители легко допускают радость ребенка, восторг, интерес, им бывает сложнее со тревогой, страхом, подавленностью, и почти невыносимо с гневом, возмущением, яростью. В некоторых семьях родители транслируют: «злой = плохой, злиться – плохо, на маму/папу/бабушку злиться нельзя». Правда, и с чувством радости бывают проблемы. Например, мама может требовать восторженной радости по поводу одних ситуаций (скажем, поездки, которую она организовала для всей семьи) и обесценивать чувство радости ребенка по поводу того, что приносит удовольствие именно ему, а ей самой кажется глупым/неважным/скучным (нужное подчеркнуть). Природа же равнодушна к морали и человеческим неврозам. Она дала нам врожденные эмоции, чаще всего к ним относят: страх, радость (как удовольствие), злость (как неудовольствие), отвращение, интерес. Эти эмоции нам необходимы, чтобы жить полной жизнью, они помогают нам выживать, защищать свои границы, узнавать новое. Есть также и множество оттенков названых эмоций, сочетаний, чувств. Среди которых нет плохих. Если эмоция/чувство возникло — значит для этого было основание. И родитель должен быть открыт ЛЮБОМУ чувству своего ребенка по отношению к ЛЮБОМУ объекту (независимо от морали). Другое дело, что не всякая форма выражения допустима. И задача родителя – научить ребенка выражать свои чувства в приемлемой форме. Например, товарищ по песочнице сломал игрушку. Эмоция ребенка – ярость. Форма выражения может быть различна, как примеры: 1) ярость/злость подавляются, превращаются в обиду и ребенок начинает беззащитно плакать, 2) ребенок в ярости ударяет товарища совком по голове, 3) ребенок падает на песок и закатывает истерику, 4) ребенок просто и ясно говорит: «Я злюсь, что моя игрушка сломана…» (обычно в случае наличия родителя-«контейнера»).
  3. Быть хорошим контейнером значит облечь чувства ребенка в слова.Проявить эмпатию (что значит почувствовать то, что чувствует он). Изначально ребенок не понимает, что именно с ним происходит. Он просто ощущает некое внутреннее состояние. Что-то внутри происходит и выражение лица меняется, руки сжимаются в кулаки, тело напрягается. Ребенок ищет выход этому состоянию через поведение, тело, крик. Родителю необходимо назвать это чувство, а лучше и его причину. «Тебе сейчас страшно», «Тебе тревожно», «Ты растерялся», «Ты сердишься, потому что не можешь дотянуться до этой игрушки».
  4. Быть хорошим контейнером значить побыть с чувством ребенка. Продолжить проявлять эмпатию (хоть некоторое время). После того, как мы услышали чувство ребенка и озвучили его, важно хоть немного (а лучше столько, сколько нужно самому ребенку) побыть с его чувством. «Тебе сейчас страшно среди новых людей и хочется спрятаться. И хочется остаться незамеченным, и чтобы никто не обращал внимание. Так?» или «Ты в гневе на учительницу. Тебе просто хочется рычать от злости, кричать, ругать. Ты просто в ярости от несправедливости». «Мы не спешим тут же решать ситуацию, давать советы, успокаивать. Нам как родителям необходимо просто побыть рядом, вместе. Обнять, если нужно, подержать за руку, можно говорить или помолчать.

Следующие два пункта не относятся к процессу «контейнирования», но являются крайне важными для эмоционального развития ребенка и установки границ. Ведь принятие чувств ребенка, перевод их в слова, сопереживание – не значат вседозволенность. Поэтому родителю очень важно:

5. Предложить допустимые формы выражения эмоции. Но не столько социально одобряемые, сколько – подходящие для самого ребенка. Например, выразить злость маленькому ребенку может помочь рычание («Давай порычим»), или потопать ногами, постучать кулаками, помутузить боксерскую грушу, но бить и унижать другого человека – недопустимо, даже когда злишься. Это относится ко всем (!) членам семьи.

6. Говорить о своих собственных чувствах. Чтобы (а) с одной стороны на своем примере показывать, как именно можно говорить о чувствах (любых! чувствах), (б) дать ребенку понять, как его чувства и их проявление воспринимаются окружающими. Например: «Я слышу, что ты очень устал и хочешь побыть один, но меня задевает грубость твоих слов. Ты мог бы просто попросить меня, чтобы я оставила тебя на час-другой». Здесь любимая книжка Юлии Гиппенрейтер («Общаться с ребенком. Как?») — Вам в помощь.

Определенно, что процесс слушания ребенка, контейнирование его переживаний, разговор с ребенком о его чувствах, сотрудничество занимают гораздо больше времени, чем стратегия “требовать, орать, взять в охапку” (иногда взять в охапку тоже нужно – но такие ситуации крайне редки). Однако с каждым разом, слышать, принимать, договариваться будет проще, а сама эмоциональная забота о ребенке в конечном счете определит, вырастет ли он психологически благополучным или невротиком.

Русские Блоги

Большинство студентов будут определять два профиля при помощи Spring MVC, один Spring Профиль Spring.xml, а другой файл конфигурации Spring-mvc.xml в Spring MVC.

В чем проблема с вами дать вам вопрос, если вы определили один пример боб, который идентичен ID в Spring.xml и Спринг-MVC.xml файлы? Каждый может думать об этом снова.

Я сделал эксперимент. Вывод, что существует два одинаковых идентификаторов в контейнере, и они не мешают друг другу.

Почему это? Студенты, которые научились Spring, безусловно, вопрос, хорошо известные только маркировка Bean, как может быть два одинаковых идентификаторов? Это то, что я насмешка?

Прости меня, я продавал со всеми. В самом деле, все это правильно, потому что здесь включает в себя точку знаний родитель-ребенок контейнер Spring MVC.

Эта точка знания: есть Spring MVC, контейнеры Весной два МОК в процессе использования Spring MVC и Spring MVC является суб-контейнера в Spring.

Что это отец и сын контейнер?

Для того, чтобы гарантировать, что власть я сказал, а не второй торговца знаний, я познакомлю с весны официальной документации и исходного кода.

2.Spring MVC родитель-потомок контейнера

2.1 Конфигурация web.xml

Тем не менее найти запись программы, проверьте конфигурационный файл web.xml, найти Spring MVC-связанную конфигурацию.

Конфигурация очень просто, настроен сервлет с типом DispatcherServlet, и устанавливает параметры инициализации. Что такое DispatcherServlet?

Введение класса 2,2 DispatcherServlet

Это на самом деле нормальный сервлет от наследства и наследуются от HTTPServlet. Тогда почему же этот сервлет завершил серию Spring MVC сложных функций? Продолжайте смотреть вниз.

2.3 DispatcherServlet рабочий процесс

Рабочий процесс DispatcherServlet выглядит следующим образом:

(1) Все запросы направляются в DispacherServlet.

(2) DispacherServlet запроса соответствующего контроллера в соответствии с адресом запроса, а затем возвращается к dispacherservlet.

(3) После того, как DispacherServlet получает контроллер, пусть Controler обрабатывать соответствующую бизнес-логику.

(4) Результат возвращается к DispacherServlet после того, как обработка контроллера завершена.

(5) DispacherServlet Полученный результат анализируется с помощью синтаксического анализатора зрения и получает соответствующую страницу.

(6) DispacherServlet переходит к анализируемой странице.

В течение всего процесса, DispatcherServlet берет на себя роль центрального контроллера для обработки различных запросов.

2.4 DispatcherServlet отношение наследования контекста

Над изображение с официального сайта Spring:

Из рисунка, вы можете увидеть, что есть сервлет WebApplicationContext в DispatcherServlet, унаследовав от корневой WebApplicationContext.

ИзПоследняя статьяМы знаем, что WebApplicationContext на самом деле контейнер МОК, Root WebApplicationContext является контейнером Spring.

Это показывает, что контейнер МОК создан в DispatcherServlet и контейнер наследует Spring контейнер, который является суб-контейнера в Spring.

И есть текстовое описание в официальном документе:

В связи с чертежами и выше слов, можно сделать следующую информацию:

  1. Несколько контейнеров МОК могут быть включены в приложение.
  2. Создание в DispatcherServlet создан в основном содержит бобы, связанные с контроллером, View резольверы и т.д.
  3. Родительский контейнер корень WebApplicationContex в основном содержит некоторую Фасоль, такие как DAO, услуги и т.д., необходимую для обмена несколько сервлет.
  4. Если вы не можете найти компонент в суб-контейнера, вы можете перейти в родительский контейнер, чтобы найти компонент.

Видя, что каждый может понять, что в самом начале я сказал в начале отца и сына контейнера в начале Spring MVC, есть и ваше мнение и ответ на этот вопрос.

Читать:
Выполнен вход в аккаунт вк что делать

Конечно, эта статья еще не закончилась, в конце концов, это ограничивается только понимание официального документа, в целях дополнительной проверки, мы принимаем окончательное оружие:

2.5 DispatcherServlet Источник Анализ кода

В этом разделе мы разделены на создание контейнера Spring MVC и две части Beans.

2.5.1 Создание контейнера Spring MVC

Предыдущий анализ в природе или сервлет, так как сервлет, понять жизненный цикл сервлета, зная, что сервлет нагрузки Web-контейнер для выполнения функции инициализации (), поэтому анализировать прорыв в Интернете.

Функция считывания параметра инициализации на шаге 1, в конечном счете называть SetContextConfigLocation () Параметры путь к файлу конфигурации. Здесь основное внимание будет уделено INITSERVLETBEAN () и продолжать отслеживать.

Можно видеть, что WebApplicationContext делится на 2 этапа.

(1) Получить родительский контейнер RootwebApplicationContext.

(2) Создание суб-контейнера.

Давайте посмотрим на то, как получается rootwebapplicationcontext.

Я не видел из кода выше, чтобы получить WebApplicationContext назвал «WebApplicationContext.Root_attribute» от ServletContext.

добросовестноПоследняя статьяОдноклассники должны помнить, что это свойство имеет значение в шаге 3 в функции пружина Инициализация Контейнер INITWEBAPPLICATIONCONText (), значение полученного значения является контейнером Spring IoC.

Продолжить, чтобы увидеть, как создать WebApplicationContext.

Видно, что у студентов есть чувство познакомиться здесь. Да, эта логика иПоследняя статьяСоздание логики Spring IoC.

Единственное отличие состоит в том, что на шаге 2, установите пружинный контейнер для вашего родительского контейнера. Что касается процесса регистрации, разрешения, конкретизации, таких как Bean в новом контейнере, передается на обработку класса XMLWebApplicationContext и одноклассник, которые не освоенные можно увидеть.Последняя статья。

2.5.2 Приобретение Spring MVC Bean

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

Приведенный выше код может соответствовать официальному документу. «Если компонент можно найти в суб-контейнера, перейти в родительский контейнер, чтобы найти» объяснить.

3. Маленький узел

После прочтения введения выше, я считаю, что каждый знает понятие родитель-потомок контейнера Spring MVC, и теперь мы проанализируем проблему в начале статьи.

Что произойдет, если Spring.xml и весна-MVC.xml определяют один и тот же ID боб? Допущение >

1. Во-первых инициализации пружины, генерировать идентификатор в виде, например испытаний Bean в контейнере Spring IoC.

2. Spring MVC начал инициализировать и генерировать идентификатор в качестве экземпляра Test Bean.

В это время, два контейнера имеют фасоли одного и того же ID, соответственно. Будет ли это использование не будет сбит с толку?

При использовании этого компонента в бизнес-логике Spring MVC, то Spring MVC будет непосредственно вернуться к бобу вашего контейнера.

Когда вы используете этот компонент в бизнес-логике Spring, потому что боб ребенок контейнера является невидимым для отца, он будет непосредственно вернуться к фасоли в контейнере Spring.

Хотя выше письма не вызовет проблем. Но в самом процессе использования, рекомендуется, чтобы каждый будет писать определения фасоли в файле spring.xml.

Поскольку первоначальное намерение использования одного примера боба только один экземпляр в контейнере МОК, если определены два файла конфигурации, два одинаковых экземпляра генерируются, в результате чего трата ресурсов, а также легко вызвать дефекты при определенных сцен ,

4. Конец

Теперь все это в основном не используется в виде компонента в файле XML, но использует аннотации для определения боба и определить пакет сканирования в файле XML. следующее:

Если вы настроены с повторяющимися пакетами в Spring.xml и Спринг-MVC.xml?

Если одноклассники, которые понимают эту статью уже знали ответ.

Ответ должен генерировать много того же компоненту в двух контейнерах родитель-МОК, что приведет к трате ресурсов памяти.

Может быть, может быть одноклассник, который только устанавливает пакет сканирования в Spring.xml, чтобы избежать этой проблемы, это так?

Если вы можете попробовать, что будет происходить в этом. Если нет, то почему?

Если вы хотите знать, пожалуйста, с нетерпением ждем следующего разложения!

Что такое Style Queries?

Также я веду телеграм канал “Frontend по-флотски”, где рассказываю про интересные вещи из мира разработки интерфейсов.

Вступление

Size container queries и container query units недавно достигли стабильной поддержки во всех современных браузерных движках.

Однако спецификация CSS Containment включает в себя не только получение размера; она также позволяет получать значения стилей родительского элемента. Начиная с Chromium 111, вы сможете применять стили контейнеров для значений CSS variables и получать их значение у родительского элемента.

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

Спецификация CSS Containment Module Level 3, которая охватывает запросы размера и стиля, позволяет получать любые стили у родителя, включая пары ключей и значений, например, font-weight: 800. Однако в процессе развертывания этой функции получение стилей в настоящее время работает только со значениями CSS custom property. Это всё равно очень полезно для комбинирования стилей и отделения данных от дизайна. Давайте рассмотрим, как использовать style queries с CSS custom properties:

Начало работы с Style Queries

Допустим, у нас есть следующий HTML:

Чтобы использовать Style Queries, необходимо сначала установить элемент-контейнер. Это требует несколько иного подхода в зависимости от того, к прямому или косвенному родителю вы обращаетесь.

Запрос прямых родителей

В отличие от Style Queries, вам не нужно использовать контейнеры через свойства container-type или container к классу .card-container , чтобы .card могла получать стили своего непосредственного родителя. Однако нам необходимо применить стили (значения CSS custom property в данном случае) к контейнеру (.card-container в данном случае) или любому элементу, содержащему элемент, который мы стилизуем в DOM. Мы не можем применять стили, которые мы запрашиваем, к непосредственному элементу, который мы стилизуем с помощью этого запроса, поскольку это может привести к бесконечным циклам.

Чтобы напрямую обратиться к родителям, вы можете написать:

Возможно, вы заметили, что запрос стиля обертывает запрос с помощью style() . Это сделано для того, чтобы отделить значения размеров от стилей. Например, вы можете написать запрос на ширину контейнера в виде @container (min-width: 200px) < . >. Это позволит применить стили, если родительский контейнер имеет ширину не менее 200px. Однако min-width также может быть CSS custom property, и вы можете запросить CSS-значение min-width с помощью стилевых запросов. Вот почему вы используете обертку style() , чтобы сделать разницу очевидной: @container style(min-width: 200px) < . >.

Стилизация косвенных родителей

Если вы хотите получить стили для любого элемента, который не является прямым родителем, вам нужно дать этому элементу container-name . Например, мы можем применить стили к .card на основе стилей .card-list , присвоив .card-list имя контейнера и сославшись на него в style query.

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

Но все это имеет гораздо больше смысла на практике. Давайте рассмотрим несколько примеров:

Style queries в действии

Style queries особенно полезны, когда у вас есть многократно используемый компонент с несколькими вариантами, или когда у вас нет контроля над всеми стилями, но вам нужно применить изменения в определенных случаях. В данном примере показан набор карточек товаров, которые используют один и тот же компонент карточки. Некоторые карточки товаров имеют дополнительные детали/примечания, такие как «Новинка» или «Низкий запас», вызываемые через custom property с именем — details . Кроме того, если товар находится в состоянии «Низкий запас», он выделяется красной рамкой. Этот тип информации, вероятно, отображается на сервере и может быть применен к карточкам с помощью инлайн стилей, как показано ниже:

Учитывая эти структурированные данные, вы можете передать значения в —detail и использовать его для применения стилей:

Приведенный выше код позволяет нам применить фишку для —detail: low-stock и —detail: new , но вы могли заметить некоторую избыточность в блоке кода. В настоящее время не существует способа запросить только наличие — detail с помощью @container style(—detail) , что позволило бы лучше распределить стили и уменьшить количество повторений. Эта возможность в настоящее время обсуждается в рабочей группе.

Карточки погоды

В предыдущем примере для применения стилей использовалась одна переменная с несколькими возможными значениями. Но вы можете смешивать их, используя и запрашивая несколько custom-property. Возьмем пример с карточками погоды:

Чтобы стилизовать фоновые градиенты и значки для этих карточек, найдите характеристики погоды, такие как «cloudy», «rainy» или «sunny»:

Таким образом, вы можете стилизовать каждую карточку на основе ее уникальных характеристик. Но вы также можете создавать стили для комбинаций характеристик (custom property), используя комбинатор and так же, как и для медиа-запросов. Например, день, который одновременно пасмурный и солнечный, будет выглядеть следующим образом:

Еще более полезным для запросов к контейнеру стиля была бы возможность использовать значения диапазона. Например, вы можете отправить такие данные, как —chanceOfRain: 50% , а затем использовать диапазон, например, @container style(30% <= —chanceOfRain < 60%) для применения стилей. Таким образом, можно было бы получить гораздо более детальный дизайн и его различные комбинации. Это еще одна возможность, которая активно обсуждается в рабочей группе по container queries.

Отделение данных от дизайна

В обоих примерах есть структурное преимущество разделения слоя данных (DOM, который будет отображаться на странице) и применяемых стилей. Стили записываются как возможные варианты, которые живут внутри стиля компонента, в то время как конечная точка может отправлять данные, которые затем будут использоваться для стилизации компонента. Вы можете использовать одно значение, как в первом случае, обновляя значение —detail , или несколько переменных, как во втором случае (устанавливая либо —rainy, либо —cloudy , либо —sunny . И самое интересное, что вы можете комбинировать эти значения, проверяя одновременно —sunny и —cloudy , вы можете показать частично cloudy стиль.

Обновление значений CSS custom property через JavaScript может быть выполнено, либо во время вёрстки компонента (т.е. при создании компонента во фреймворке), либо обновлено в любое время с помощью parentElem.style.setProperty(‘—myProperty’, ) .

Вот демонстрация, которая в несколько строк кода обновляет —theme кнопки и применяет стили с помощью style queries и custom property ( —theme ):

Стилизация карточки через style queries с помощью JavaScript:

Функции, подробно описанные в этой статье, — это только начало. Вы можете ожидать от container query большего, что поможет вам создавать динамичные, отзывчивые интерфейсы. Что касается конкретно style queries, то здесь остается несколько открытых вопросов. Один из них — реализация style queries для стилей за пределами CSS custom properties. Это уже является частью текущего уровня спецификации, но еще не реализовано ни в одном браузере. Ожидается, что boolean context evaluation будет добавлена в текущий уровень спецификации, когда будет решен этот вопрос, в то время как запрос диапазона запланирован на следующий уровень спецификации.

Родительский контейнер что это

Каждый виджет, кроме окна, располагается в определенном родительском контейнере. Например:

Здесь для метки lbl контейнером выступает главное окно — root. Однако графическое приложение может иметь более сложную структуру со множеством вложенных контейнеров. И для каждого виджета можно явным образом установить контейнер с помощью первого параметра конструктора, который называтся master . Например, в примере выше мы могли бы явным образом прописать для Label родительский контейнер:

В данном случае это не имеет смысла, кнопка по умолчанию добавляется в окно. Однако также мы можем определять вложенные контейнеры. В частности, для в Tkinter предназначен виджет Frame .

Frame

Frame отображает прямоугольник и обычно применяется для организации интерфейса в отдельные блоки. Некоторые основные параметры, которые мы можем установить через конструктор класса Frame:

borderwidth : толщина границы фрейма, по умолчанию равно 0

relief : определяет тип границы, может принимать значения SUNKEN, RAISED, GROOVE, RIDGE

cursor : устанавливает курсор при наведении на фрейм

height : высота фрейма

width : ширина фрейма

padding : отступы от вложенного содержимого до границ фрейма

Здесь фрейм имеет границу толщиной в 1 пиксель. Граница представляет обычную линию ( relief=SOLID ). Также для фрейма заданы внутренние отступы: 8 по горизонтали и 10 по вертикали. Для установки отступов можно использовать следующие формы:

В сам фрейм добавляются два других виджета: Label и Entry. Для этого для обоих виджетов указываем фрейм в качестве родительского контейнера.

Frame в Tkinter и Python

При этом мы можем вынести во вне создание фрейма:

Здесь для создания фрейма определена функция create_frame, которая возвращает фрейм с меткой и текстовым полем. Далее создаем с помощью этой функции два фрейма и добавляем их в окно:

Похожие статьи