Latest posts on Tk,обновление виджета Text автоматически topichttp://python.su/forum/topic/31705/2016-12-27T07:49:47+02:00Общий :: GUI :: Tk,обновление виджета Text автоматически
2016-12-27T07:49:47+02:00doza_and172548<blockquote><em>Cergei</em><br/>По таймеру само то.<br/>Теперь сообразить как сделать таймер и чтоб он вызывался.</blockquote>Вы не поняли. Я имел ввиду таймер Tk который изначально встроен в mainloop<br/><br/><a href="https://ru.wikiversity.org/wiki/%D0%9A%D1%83%D1%80%D1%81_%D0%BF%D0%BE_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B5_Tkinter_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_Python#after.2C_after_idle_.D0.B8_after_cancel.5B3.5D">https://ru.wikiversity.org/wiki/%D0%9A%D1%83%D1%80%D1%81_%D0%BF%D0%BE_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B5_Tkinter_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_Python#after.2C_after_idle_.D0.B8_after_cancel.5B3.5D</a><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">import</span> <span class="nn">time</span>
<span class="k">def</span> <span class="nf">tick</span><span class="p">():</span>
<span class="n">label</span><span class="o">.</span><span class="n">after</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="n">tick</span><span class="p">)</span>
<span class="n">label</span><span class="p">[</span><span class="s1">'text'</span><span class="p">]</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%H:%M:%S'</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">label</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">font</span><span class="o">=</span><span class="s1">'sans 20'</span><span class="p">)</span>
<span class="n">label</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">label</span><span class="o">.</span><span class="n">after_idle</span><span class="p">(</span><span class="n">tick</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,обновление виджета Text автоматически
2016-12-26T10:15:58+02:00Cergei172494По таймеру само то.<br/>Теперь сообразить как сделать таймер и чтоб он вызывался.Ведь Tk крутится постоянно в одном цикле и прервать его можно через кнопку->bind.<br/><br/>Таймер делаем через модуль time ? с помощью time.time() ? Но как то попасть надо на строчку time.time() в Tk…..
Общий :: GUI :: Tk,обновление виджета Text автоматически
2016-12-26T08:41:00+02:00doza_and172490<blockquote><em>Cergei</em><br/>через определенный интервал</blockquote>Тут важно понимать сколько времени считывание занимает. Если все проходит быстро и безболезненно то таймер и без тредов позволит решить задачу.<br/><blockquote><em>4kpt_IV</em><br/>С потоками Tkinter очень сильно не дружит. </blockquote>А OnIdle в Tk нет?<br/>
Общий :: GUI :: Tk,обновление виджета Text автоматически
2016-12-25T09:42:30+02:004kpt_IV172430<strong>FishHook</strong> ты не прав, дядька. С потоками Tkinter очень сильно не дружит. Там ломается все, хотя есть хак, как запустить в отдельном потоке. <br/><br/>Тут есть несколько вариантов:<br/>1. Запускать вообще как отдельное приложение бекграунд задачу использую сельдерей или RQ.<br/>2. Использовать хак, который позволяет запустить GUI в отдельном потоке.<br/>3. Построить систему на коллбеках (сложно тестировать и вообще овер).<br/><br/>По второму вопросу. Да можно. Вместо индекса нужно использовать (“END”).
Общий :: GUI :: Tk,обновление виджета Text автоматически
2016-12-25T07:41:58+02:00FishHook172429Делайте таймер в другом потоке
Общий :: GUI :: Tk,обновление виджета Text автоматически
2016-12-25T02:53:43+02:00Cergei172424Здравствуйте.<br/>1)Хочу сделать программку для считывания определенных данных в виджет Text автоматически,через определенный интервал.При этом нужно чтоб смог и кнопки нажимать для управления,а не крутилась программка в одном цикле обновления Text.<br/><br/>2) Также хотел спросить есть возможность в поле Text выводить информацию с новой строки,не затирая старую ?