Latest posts on Как скрыть фрейм? TK topichttp://python.su/forum/topic/36413/2019-01-09T19:12:07+02:00Общий :: GUI :: Как скрыть фрейм? TK
2019-01-09T19:12:07+02:00Rafik198430Насчёт сетки. Её никто никто не создаёт заранее, она создаётся при компоновке по сетке в пределах окна или в пределах фрейма. В одном и том же окне можно спокойно сочетать компоновку по сетке и по pack или place. Для этого надо объявить фрейм для компоновки по сетке и в него помещаем то, что компонуем только по сетке, а остальное в другом фрейме или в осноном окне по pack или place. Ну, и можно, наоборот - фрейм для прочего, а окно для сетки. Поэкспериментируй и все тонкости познаешь.
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-09T18:02:42+02:00SadSa13197835<blockquote><em>PEHDOM</em><br/>Да скуяли? Я же вам привел рабочий код тут <a href="http://python.su/forum/topic/36413/?page=1#post-197821">http://python.su/forum/topic/36413/?page=1#post-197821</a><br/>где .place_forget() нормально работает с фреймами.</blockquote>Когда вкладку с темой обновлял как-то умудрился просмотреть. Большое спасибо за помощь.
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-09T15:29:17+02:00PEHDOM197830<blockquote><em>SadSa13</em><br/>Срабатывает наш ивент. Создается виджет </blockquote>нет, в данной реализации все виджеты уже созданы, и находяться в памяти, происходит следующее<br/><div class="code"><pre> <span class="n">t_password_fr</span><span class="o">.</span><span class="n">place_forget</span><span class="p">()</span> <span class="c1"># скрываем(убираем с формы нафик) фрейм t_password_fr с о всем зоопарком котороый находиться на нем. НО фрейм не удаляеться, он продолжает висеть в памяти, просто его не видно.</span>
<span class="n">t_menu_gr</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">270</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span> <span class="c1"># отображаем фрейм t_menu_gr. Он должен быть уже созда заранее.</span>
</pre></div><br/><blockquote><em>SadSa13</em><br/>Следом нажмем<br/>…..<br/>Получится, что 1 виджет просто накрывает новая надпись.</blockquote>нет, виджет не накрывает предыдущий, я специально расположил виджеты на разных позициях, если убрать place_forget()то будет видно одновремеено два виджета Label<br/>F происходит следующее :<br/><div class="code"><pre> <span class="n">t_menu_gr</span><span class="o">.</span><span class="n">place_forget</span><span class="p">()</span> <span class="c1"># скрываем(убираем с формы нафик) фрейм t_menu_gr с о всем зоопарком котороый находиться на нем.</span>
<span class="n">t_password_fr</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">270</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span> <span class="c1"># отображаем фрейм t_password_fr Он должен быть уже созда заранее.</span>
</pre></div>Конечно же этот метод годиться если у вас простенькая программка на две-три вкладки. При достаточно болшом колличестве элементов-вкладок-фреймов держать все в памяти нет никакого смысла, тем более что некотороые опции вызываются ну очень редко, например About или Help. Тут имеет смысл для каждого окна-фрейма-вкладки создать свой класс или функцию которая будет его отрисовывать когда нужно, а когда в нем отпадет надобность он будет уничтожаться освобождая память. Но поскольку постановка вопроса была весьма общая то и ответ соответвующий.<blockquote><em>SadSa13</em><br/>Задача состоит именно в том, чтобы скрыть ненужный фрейм. .place_forget() не работает с ними</blockquote>Да скуяли? Я же вам привел рабочий код тут <a href="http://python.su/forum/topic/36413/?page=1#post-197821">http://python.su/forum/topic/36413/?page=1#post-197821</a><br/>где .place_forget() нормально работает с фреймами.<br/>
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-09T15:02:49+02:00SadSa13197829<blockquote><em>PEHDOM</em><br/>t_password_fr = ttk.Frame(root, width=320,height=700)<br/>вы связываете с переменной t_password_fr виджет типа ttk.Frame, и потом можете делать с этим виждетом все что хотите, скрыть, показать, изменить настройки, переместить …</blockquote>Допустим,что мы нажимаем <br/><div class="code"><pre> <span class="n">Button</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s2">"Меню"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event1</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">100</span><span class="p">)</span>
</pre></div>Срабатывает наш ивент. Создается виджет .<br/>Следом нажмем<br/><div class="code"><pre> <span class="n">Button</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s2">"Пароли"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event2</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">150</span><span class="p">)</span>
</pre></div>Получится, что 1 виджет просто накрывает новая надпись.<br/>Но, т.к в будущем мы не просто оставим эти label, мы должны будем добавить в раздел “О нас……” текст, а в “Пароли” поле ввода ( или что-нибудь еще ). <br/>Получается, что при нажатии кнопки предыдущая информация или виджеты остаются. просто частично перекрываются новыми.Это проблема.<br/><br/>Можно попробовать решить, создав фрейм и поместив на него все, что нам нужно именно на той “вкладке”, на кнопку которой мы нажимаем. Соответственно, при переходе в другой раздел меню наш, уже не актуальный, фрейм удаляется или скрывается, а на его месте появляется новый с другим содержимым.<br/><br/>Задача состоит именно в том, чтобы скрыть ненужный фрейм. .place_forget() не работает с ними, а исходя из ваших слов можно вместо этого прописать виджет не добавляя pack(), grid() или place().<br/><br/>Я вас правильно понял?<br/>
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-09T13:38:00+02:00PEHDOM197827<blockquote><em>SadSa13</em><br/>.НО! Как-то же подобное должно работать, создают же люди менюшки.</blockquote>Давайте уточним, работает что?. <br/>Еще раз повтрюсь, когда вы делаете<br/>t_password_fr = ttk.Frame(root, width=320,height=700)<br/>вы связываете с переменной t_password_fr виджет типа ttk.Frame, и потом можете делать с этим виждетом все что хотите, скрыть, показать, изменить настройки, переместить …<br/>когда вы делаете tpasswordfr = ttk.Frame(root,width=320,height=700).place(x = 270,y = 700)<br/>вы с переменной tpasswordfr связываете результат выполнения команды place() тоесть None<br/>Виджет держиться на экране толко потому, что он есть в списке дочерних обьектов главного окна.<br/><br/><br/>
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-09T12:33:33+02:00SadSa13197825<blockquote><em>PEHDOM</em><br/>вам уже два раза сказали что коснтрукция не имеет смысла, и даже показали как нужно.<br/>ЗЫ забейте на place(), осваивайте grid() оно более универсальное и гибкое.<br/>Отредактировано PEHDOM (сегодня 11:52:27)</blockquote>Спасибо. Я вас понял.НО! Как-то же подобное должно работать, создают же люди менюшки. На счет .grid() я честно пытался, но главный вопрос в том, как и что создает сетку изначально?
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-09T11:45:47+02:00PEHDOM197823<blockquote><em>SadSa13</em><br/>Идея то как раз в том, чтобы при переключении кнопки ( к примеру с “Меню” на “Пароли” фрейм со всей всем, что было на Меню ( все надписи и виджеты) вместе с фреймом исчезают и появляется новый фрейм с новыми виджетами.</blockquote>вам уже два раза сказали что коснтрукция не имеет смысла, и даже показали как нужно.<br/>ЗЫ забейте на place(), осваивайте grid() оно более универсальное и гибкое.
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-09T11:43:13+02:00SadSa13197822<blockquote><em>rami</em><br/>1. Конструкция типа: переменная = виджет.place() не имеет смысла, так как переменная всегда будет None. Нужно использовать либо виджет.place() если мы не планируем изменять виджет, либо: переменная = виджет и переменная.place</blockquote>Идея то как раз в том, чтобы при переключении кнопки ( к примеру с “Меню” на “Пароли” фрейм со всей всем, что было на Меню ( все надписи и виджеты) вместе с фреймом исчезают и появляется новый фрейм с новыми виджетами.
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-09T11:37:39+02:00PEHDOM197821<strong>SadSa13</strong> давайте я угадаю, оно вам говорит что “global name ‘tpasswordfr’ is not defined”?<br/>Так это не forget не работают с фреймами, это вы не знаете разницу между глобальными и локальными переменными. Дальше будет еще веселее, оно будет сообщать вам что ‘NoneType’ object has no attribute ‘place_forget’. Это опять же не потому что “оно не работает”, а потому что вы не понимаете что делаете.<br/>Вот так оно работает, хоть местами и неправильно:<br/><div class="code"><pre> <span class="kn">from</span> <span class="nn">tkinter</span> <span class="kn">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">tkinter</span> <span class="kn">import</span> <span class="n">ttk</span>
<span class="k">def</span> <span class="nf">event1</span><span class="p">(</span><span class="o">*</span><span class="n">event</span><span class="p">):</span>
<span class="n">tpasswordfr</span><span class="o">.</span><span class="n">place_forget</span><span class="p">()</span>
<span class="n">tmenugr</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">270</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">event2</span><span class="p">(</span><span class="o">*</span><span class="n">event</span><span class="p">):</span>
<span class="n">tmenugr</span><span class="o">.</span><span class="n">place_forget</span><span class="p">()</span>
<span class="n">tpasswordfr</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">270</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span>
<span class="n">root</span> <span class="o">=</span> <span class="n">Tk</span><span class="p">()</span>
<span class="n">root</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">"Program"</span><span class="p">)</span>
<span class="n">root</span><span class="o">.</span><span class="n">geometry</span><span class="p">(</span><span class="s1">'1024x700'</span><span class="p">)</span>
<span class="n">mainfr</span> <span class="o">=</span> <span class="n">Frame</span><span class="p">(</span><span class="n">root</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">260</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">700</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s1">'#FFEFD5'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span>
<span class="n">menufr</span><span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">mainfr</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">40</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">100</span><span class="p">)</span>
<span class="n">passwordfr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">mainfr</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">40</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">150</span><span class="p">)</span>
<span class="n">settingfr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">mainfr</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">40</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">200</span><span class="p">)</span>
<span class="n">menubtn</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span> <span class="n">menufr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s2">"Меню"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event1</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">100</span><span class="p">)</span>
<span class="n">passwordbtn</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span> <span class="n">passwordfr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s2">"Пароли"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event2</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">150</span><span class="p">)</span>
<span class="n">settingbtn</span> <span class="o">=</span> <span class="n">Button</span> <span class="p">(</span> <span class="n">settingfr</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Настройки'</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event1</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">200</span><span class="p">)</span>
<span class="n">tmenugr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">root</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">320</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">700</span><span class="p">)</span>
<span class="n">ttk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">tmenugr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s1">'О нас: '</span><span class="p">,</span><span class="n">font</span><span class="o">=</span><span class="s1">'arial 14'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">50</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span>
<span class="n">tpasswordfr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">root</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">320</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">700</span><span class="p">)</span>
<span class="n">ttk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">tpasswordfr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s1">'Браузеры:'</span><span class="p">,</span><span class="n">font</span><span class="o">=</span><span class="s1">'arial 14'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">50</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span>
<span class="n">root</span><span class="o">.</span><span class="n">mainloop</span><span class="p">()</span>
</pre></div>теперь замечания вообще:<br/> - названия переменных, используйте хотябы симывол “_” для разделения, например: main_fr, menu_fr, password_fr, menu_btn и тд. вместо mainfr, menufr и тд… оно же нечитаемо.<br/>- названия процедур event1 и event2 неинформативны лучше заменить на menu_btn_pres, password_btn_press к примеру. Тогда сразу понятно что это за процедуры.<br/>- консмтрукция типа “ mainfr = Frame(root ,width=260,height=700, bg='#FFEFD5').place(x = 0,y = 0)” вообще бессмыслена, так как в переменную mainfr вернется результат выполнения place() (тоесть None), вместо ссылки на виджет типа Frame. Вы ведь заметили что задаете абсолютные координанаты, вместо относительных к фреймам в которых должны находиться виджеты? Это именно потому что у вас первым аргументом везде None, вот оно все и херачит на окно верхнего уровня.<br/>вот так оно работает правильно:<br/><div class="code"><pre> <span class="kn">from</span> <span class="nn">tkinter</span> <span class="kn">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">tkinter</span> <span class="kn">import</span> <span class="n">ttk</span>
<span class="k">def</span> <span class="nf">menu_btn_press</span><span class="p">(</span><span class="o">*</span><span class="n">event</span><span class="p">):</span>
<span class="n">t_password_fr</span><span class="o">.</span><span class="n">place_forget</span><span class="p">()</span>
<span class="n">t_menu_gr</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">270</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">password_btn_press</span><span class="p">(</span><span class="o">*</span><span class="n">event</span><span class="p">):</span>
<span class="n">t_menu_gr</span><span class="o">.</span><span class="n">place_forget</span><span class="p">()</span>
<span class="n">t_password_fr</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">270</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span>
<span class="n">root</span> <span class="o">=</span> <span class="n">Tk</span><span class="p">()</span>
<span class="n">root</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">"Program"</span><span class="p">)</span>
<span class="n">root</span><span class="o">.</span><span class="n">geometry</span><span class="p">(</span><span class="s1">'1024x700'</span><span class="p">)</span>
<span class="n">main_fr</span> <span class="o">=</span> <span class="n">Frame</span><span class="p">(</span><span class="n">root</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">260</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">700</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s1">'#FFEFD5'</span><span class="p">)</span>
<span class="n">main_fr</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span>
<span class="n">menu_fr</span><span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">main_fr</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">40</span><span class="p">)</span>
<span class="n">menu_fr</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">100</span><span class="p">)</span>
<span class="n">password_fr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">main_fr</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">40</span><span class="p">)</span>
<span class="n">password_fr</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">150</span><span class="p">)</span>
<span class="n">setting_fr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">main_fr</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">40</span><span class="p">)</span>
<span class="n">setting_fr</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">200</span><span class="p">)</span>
<span class="n">menu_btn</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">menu_fr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s2">"Меню"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">menu_btn_press</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span>
<span class="n">menu_btn</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">password_btn</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">password_fr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s2">"Пароли"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">password_btn_press</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span>
<span class="n">password_btn</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">setting_btn</span> <span class="o">=</span> <span class="n">Button</span> <span class="p">(</span><span class="n">setting_fr</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Настройки'</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">menu_btn_press</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span>
<span class="n">setting_btn</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">t_password_fr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">320</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">700</span><span class="p">)</span>
<span class="n">ttk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">t_password_fr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s1">'Браузеры:'</span><span class="p">,</span><span class="n">font</span><span class="o">=</span><span class="s1">'arial 14'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">200</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span>
<span class="n">t_menu_gr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">root</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">320</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">700</span><span class="p">)</span>
<span class="n">ttk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">t_menu_gr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s1">'О нас: '</span><span class="p">,</span><span class="n">font</span><span class="o">=</span><span class="s1">'arial 14'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">200</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">100</span><span class="p">)</span>
<span class="n">root</span><span class="o">.</span><span class="n">mainloop</span><span class="p">()</span>
</pre></div>
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-09T10:25:02+02:00rami1978191. Конструкция типа: <strong>переменная = виджет.place()</strong> не имеет смысла, так как <strong>переменная</strong> всегда будет <strong>None</strong>. Нужно использовать либо <strong>виджет.place()</strong> если мы не планируем изменять виджет, либо: <strong>переменная = виджет</strong> и <strong>переменная.place</strong><br/><div class="code"><pre> <span class="c1">#если не нужна переменная пишем так:</span>
<span class="n">Button</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s2">"Пароли"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event2</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">150</span><span class="p">)</span>
<span class="c1">#если переменная нужна пишем так:</span>
<span class="n">btn1</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s2">"Пароли"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event2</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span>
<span class="n">btn1</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">150</span><span class="p">)</span>
</pre></div><br/>2. Все ваши фреймы (кроме одного) существуют сами по себе, они невидимы, ни в чём не участвуют, а некоторые даже находятся за пределами главного окна. Если удалить эти фреймы и их переменные, никто не заметит пропажи.<br/>Следующий код делает то же самое что и ваш, только без лишнего мусора:<br/><div class="code"><pre> <span class="kn">from</span> <span class="nn">tkinter</span> <span class="kn">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">tkinter</span> <span class="kn">import</span> <span class="n">ttk</span>
<span class="k">def</span> <span class="nf">event1</span><span class="p">():</span>
<span class="n">ttk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s1">'О нас: '</span><span class="p">,</span><span class="n">font</span><span class="o">=</span><span class="s1">'arial 14'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">550</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">event2</span><span class="p">():</span>
<span class="n">ttk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s1">'Браузеры:'</span><span class="p">,</span><span class="n">font</span><span class="o">=</span><span class="s1">'arial 14'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">550</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span>
<span class="n">root</span> <span class="o">=</span> <span class="n">Tk</span><span class="p">()</span>
<span class="n">root</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">"Program"</span><span class="p">)</span>
<span class="n">root</span><span class="o">.</span><span class="n">geometry</span><span class="p">(</span><span class="s1">'1024x700'</span><span class="p">)</span>
<span class="n">Frame</span><span class="p">(</span><span class="n">root</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">260</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">700</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s1">'#FFEFD5'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="c1">#этот фрейм нужен для раскраски</span>
<span class="n">Button</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s2">"Меню"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event1</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">100</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s2">"Пароли"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event2</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">150</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s1">'Настройки'</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event1</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">200</span><span class="p">)</span>
<span class="n">root</span><span class="o">.</span><span class="n">mainloop</span><span class="p">()</span>
</pre></div><br/>Чтобы продолжить дальше, нужно знать почему вы хотите что-то удалить или скрыть, скорей всего проще и правильней будет поменять надпись в <strong>Label</strong>, чем пинать её ногами.
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-08T22:25:20+02:00SadSa13197811<blockquote><em>PEHDOM</em><br/>SadSa13 ну вы хоть код какойнить выложите, чтоле? чтобы понимать что на самом вы делаете.</blockquote><div class="code"><pre> <span class="kn">from</span> <span class="nn">tkinter</span> <span class="kn">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">tkinter</span> <span class="kn">import</span> <span class="n">ttk</span>
<span class="k">def</span> <span class="nf">event1</span><span class="p">(</span><span class="o">*</span><span class="n">event</span><span class="p">):</span>
<span class="c1">#tpasswordfr.place_forget()</span>
<span class="n">tmenugr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">root</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">320</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">700</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">270</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">700</span><span class="p">)</span>
<span class="n">tmenulb</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">tmenugr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s1">'О нас: '</span><span class="p">,</span><span class="n">font</span><span class="o">=</span><span class="s1">'arial 14'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">550</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">event2</span><span class="p">(</span><span class="o">*</span><span class="n">event</span><span class="p">):</span>
<span class="n">tpasswordfr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">root</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">320</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">700</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">270</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">700</span><span class="p">)</span>
<span class="n">tmenulb</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="n">tpasswordfr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s1">'Браузеры:'</span><span class="p">,</span><span class="n">font</span><span class="o">=</span><span class="s1">'arial 14'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">550</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">50</span><span class="p">)</span>
<span class="n">root</span> <span class="o">=</span> <span class="n">Tk</span><span class="p">()</span>
<span class="n">root</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">"Program"</span><span class="p">)</span>
<span class="n">root</span><span class="o">.</span><span class="n">geometry</span><span class="p">(</span><span class="s1">'1024x700'</span><span class="p">)</span>
<span class="n">mainfr</span> <span class="o">=</span> <span class="n">Frame</span><span class="p">(</span><span class="n">root</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">260</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">700</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s1">'#FFEFD5'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span>
<span class="n">menufr</span><span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">mainfr</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">40</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">100</span><span class="p">)</span>
<span class="n">passwordfr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">mainfr</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">40</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">150</span><span class="p">)</span>
<span class="n">settingfr</span> <span class="o">=</span> <span class="n">ttk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="n">mainfr</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">40</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">200</span><span class="p">)</span>
<span class="n">menubtn</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span> <span class="n">menufr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s2">"Меню"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event1</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">100</span><span class="p">)</span>
<span class="n">passwordbtn</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span> <span class="n">passwordfr</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s2">"Пароли"</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event2</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">150</span><span class="p">)</span>
<span class="n">settingbtn</span> <span class="o">=</span> <span class="n">Button</span> <span class="p">(</span> <span class="n">settingfr</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Настройки'</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">event1</span><span class="p">,</span> <span class="n">activebackground</span><span class="o">=</span><span class="s1">'#FF4500'</span><span class="p">)</span><span class="o">.</span><span class="n">place</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="mi">200</span><span class="p">)</span>
<span class="n">root</span><span class="o">.</span><span class="n">mainloop</span><span class="p">()</span>
</pre></div>
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-08T19:48:01+02:00PEHDOM197810<strong>SadSa13</strong> ну вы хоть код какойнить выложите, чтоле? чтобы понимать что на самом вы делаете.
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-08T19:46:18+02:00SadSa13197809<blockquote><em>PEHDOM</em><br/></blockquote>Пишу как раз после гугления. Все forget не работают с фреймами.
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-08T18:17:11+02:00PEHDOM197808<blockquote><em>SadSa13</em><br/>Реализуемо?</blockquote>Да. гуглите в сторону pack_forget и grid_forget .
Общий :: GUI :: Как скрыть фрейм? TK
2018-12-08T18:16:06+02:00SadSa13197807Требуется скрыть или удалить фрейм со всем, что на нем при нажатии кнопки. Реализуемо?