Latest posts on В Tkinter не получается передать значение в метод timer() topichttp://python.su/forum/topic/39021/2020-05-21T22:30:38+03:00Общий :: Python для новичков :: В Tkinter не получается передать значение в метод timer()
2020-05-21T22:30:38+03:00alesi210048Спасибо за помощь, видимо функция с обновлением самой себя обновляла и значение по умолчанию но защел я с другой стороны и решил проблему с помощью глобальной переменной<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">random</span>
<span class="kn">import</span> <span class="nn">time</span>
<span class="c1"># КОЛИЧЕСТВА ЗАДАЧ ДОЛЖНО ХВАТАТЬ НА ВСЕХ ПРОИЗВОДИТЕЛЕЙ</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="s1">'Round robin'</span><span class="p">)</span> <span class="c1"># надпись на верху</span>
<span class="n">root</span><span class="o">.</span><span class="n">geometry</span><span class="p">(</span><span class="s1">'850x500+300+200'</span><span class="p">)</span> <span class="c1"># ширина=500, высота=400, x=300, y=200 размер окна</span>
<span class="n">root</span><span class="o">.</span><span class="n">resizable</span><span class="p">(</span><span class="bp">True</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span> <span class="c1"># размер окна может быть изменён только по горизонтали</span>
<span class="n">timer_after_id</span> <span class="o">=</span> <span class="s1">''</span> <span class="c1"># переменная таймера ведет счет</span>
<span class="n">count_timer</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># счетчик таймера</span>
<span class="n">turn_on_setting</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># флажок включения введения данных из окна сеттиннг чтобы вводить данные из него</span>
<span class="n">trigger_time</span> <span class="o">=</span> <span class="mi">5</span>
<span class="k">class</span> <span class="nc">WindowUnit</span><span class="p">():</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">main</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox</span> <span class="o">=</span> <span class="n">Listbox</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">35</span><span class="p">,</span> <span class="n">selectmode</span><span class="o">=</span><span class="n">EXTENDED</span><span class="p">)</span> <span class="c1"># список с пунктами из листа list_performer список исполнителей и задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">main</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">18</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="n">LEFT</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox_ready_task</span> <span class="o">=</span> <span class="n">Listbox</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">45</span><span class="p">,</span> <span class="n">selectmode</span><span class="o">=</span><span class="n">EXTENDED</span><span class="p">)</span> <span class="c1"># список выполненных задач с пунктами из листа list</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call_ready_task</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">main</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">25</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="n">LEFT</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call_ready_task</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox_ready_task</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_new</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'New'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">unit_and_task_arr</span><span class="p">)</span> <span class="c1"># кнопка New на первом листе</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_new</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">sticky</span><span class="o">=</span><span class="s1">'s'</span><span class="p">)</span> <span class="c1"># расположение кнопки New</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_pause</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Pause'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">pause_timer</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_pause</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_new</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Exit'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">close_main_win</span><span class="p">)</span> <span class="c1"># кнопка New на первом листе</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_new</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">sticky</span><span class="o">=</span><span class="s1">'n'</span><span class="p">)</span> <span class="c1"># расположение кнопки New</span>
<span class="c1"># self.unit = Unit() # ссылка на класс исполнители</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span> <span class="o">=</span> <span class="n">Task</span><span class="p">()</span> <span class="c1"># ссылка на класс задачи</span>
<span class="bp">self</span><span class="o">.</span><span class="n">setting</span> <span class="o">=</span> <span class="n">Setting</span><span class="p">(</span><span class="n">main</span><span class="p">)</span> <span class="c1"># ссылка на класс Setting</span>
<span class="c1"># время срабатывания</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># массив для хранения исполнителей и задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">count_work_unit</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># счетчик остатка задач в функции work_unit</span>
<span class="bp">self</span><span class="o">.</span><span class="n">timer_count_operations</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># счетчик количества срабатываний таймера</span>
<span class="bp">self</span><span class="o">.</span><span class="n">turn_on_setting</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># флажок включения окна сеттиннг чтобы вводить данные из него</span>
<span class="c1"># self.trigger_time = True</span>
<span class="k">def</span> <span class="nf">close_main_win</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># функция закрывающая окно по кнопке cancel</span>
<span class="n">root</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span> <span class="c1"># команда закрывающая окно</span>
<span class="k">def</span> <span class="nf">unit_and_task_arr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># формируем два списока исполнителей и задач self.list_unit_and_task-для работы и self.list_unit_and_task_to_display для отображения</span>
<span class="k">global</span> <span class="n">turn_on_setting</span>
<span class="k">if</span> <span class="n">turn_on_setting</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">unit_generate</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span><span class="o">.</span><span class="n">task_generate</span><span class="p">()</span>
<span class="k">if</span> <span class="n">turn_on_setting</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">unit_generate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_min</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_max</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">min_speed_unit</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_speed_unit</span><span class="p">)</span> <span class="c1"># запускаем в классе Unit функцию unit_generate(), формируем список исполнителей</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span> <span class="o">=</span> <span class="n">Task</span><span class="p">(</span><span class="n">Task</span><span class="o">.</span><span class="n">sum_task_min</span><span class="p">,</span> <span class="n">Task</span><span class="o">.</span><span class="n">sum_task_max</span><span class="p">,</span> <span class="n">Task</span><span class="o">.</span><span class="n">min_complexity_task</span><span class="p">,</span> <span class="n">Task</span><span class="o">.</span><span class="n">max_complexity_task</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span><span class="o">.</span><span class="n">task_generate</span><span class="p">()</span> <span class="c1"># # запускаем в классе Task функцию task_generate(), формируем список задач</span>
<span class="n">shift</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">for</span> <span class="n">keys</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arr_unit</span><span class="p">:</span> <span class="c1"># формируем рабочий словарь self.list_unit_and_task вида {'Ivan 7': ['Пашет', 'Лудит', 'Закапывает'], 'Vasya 5': ['Сеет', 'Паяяет', 'Откапывает']}</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">keys</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">task</span><span class="o">.</span><span class="n">arr_task</span><span class="p">[</span><span class="n">val</span><span class="p">]</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">shift</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">task</span><span class="o">.</span><span class="n">arr_task</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arr_unit</span><span class="p">))]</span> <span class="c1"># генератор списков в словаре</span>
<span class="c1"># Первому ключу из self.unit.arr_unit присваивается первое значение из self.task.arr_task,</span>
<span class="c1"># второму -- вторая и т. д. N+1 - я задача снова назначается первому ключу, и так далее по кругу.</span>
<span class="n">shift</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="c1"># формируем отдельный словарь для отображения в программе исполнитель и первая завдача в списке</span>
<span class="n">int_arr_unit</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># формируем список из ключей</span>
<span class="n">int_arr_unit</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
<span class="n">int_arr_task</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># формируем список из первых задач</span>
<span class="k">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">)</span>
<span class="n">int_arr_task</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">int_arr_unit</span><span class="p">)):</span> <span class="c1"># обьеденяем два списка в один вложенный список [['Алекс 8', 'Выпил 8'], ['Абросимова 9', 'Сьел 9'], [' Алекс 7', ' Вдохнул 7']]</span>
<span class="n">inter_arr_displey</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">int_arr_unit</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">int_arr_task</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">inter_arr_displey</span><span class="p">)</span>
<span class="c1"># это обьединялка в один словарь self.list_unit_and_task_to_display{}</span>
<span class="k">for</span> <span class="n">unit</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span><span class="p">:</span> <span class="c1"># пробегаем по словарю передаем в программу</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">END</span><span class="p">,</span> <span class="n">unit</span><span class="p">)</span>
<span class="k">if</span> <span class="n">turn_on_setting</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="p">()</span>
<span class="k">if</span> <span class="n">turn_on_setting</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="p">()</span> <span class="c1"># запускаем функцию работу таймера</span>
<span class="k">def</span> <span class="nf">unit_generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sum_min</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">sum_max</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">min_speed</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">max_speed</span><span class="o">=</span><span class="mi">99</span><span class="p">):</span> <span class="c1"># генерируем список исполнитерлей вида "Вася 5" случайным образом, где вася имя спонителя а 5 его производительность</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_min</span> <span class="o">=</span> <span class="n">sum_min</span> <span class="c1"># количество исполнителей</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_max</span> <span class="o">=</span> <span class="n">sum_max</span>
<span class="bp">self</span><span class="o">.</span><span class="n">min_speed_unit</span> <span class="o">=</span> <span class="n">min_speed</span> <span class="c1"># мин производительность</span>
<span class="bp">self</span><span class="o">.</span><span class="n">max_speed_unit</span> <span class="o">=</span> <span class="n">max_speed</span> <span class="c1"># макс производительность</span>
<span class="n">unit_names</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Варвара'</span><span class="p">,</span> <span class="s1">'Вася'</span><span class="p">,</span> <span class="s1">'Наталья'</span><span class="p">,</span> <span class="s1">'Лидия'</span><span class="p">,</span> <span class="s1">'Федор'</span><span class="p">,</span> <span class="s1">'Петя'</span><span class="p">,</span> <span class="s1">'Агафона'</span><span class="p">,</span> <span class="s1">'Алла'</span><span class="p">,</span> <span class="s1">'Светлана'</span><span class="p">,</span> <span class="s1">'Рената'</span><span class="p">,</span> <span class="s1">'Анна'</span><span class="p">,</span> <span class="s1">'Алекс'</span><span class="p">,</span> <span class="s1">'Жанна'</span><span class="p">,</span> <span class="s1">'Пол'</span><span class="p">,</span> <span class="s1">'Мария'</span><span class="p">,</span> <span class="s1">'Тор'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_unit</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_min</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_max</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arr_unit</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sum_unit</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arr_unit</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">unit_names</span><span class="p">)</span> <span class="o">+</span> <span class="s2">" "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">min_speed_unit</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_speed_unit</span><span class="p">)))</span>
<span class="k">def</span> <span class="nf">update_display</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># обновляем отображение в первом окне при срабатывани таймера</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">END</span><span class="p">)</span> <span class="c1"># очищаем self.listbox чтобы заново заполнить его</span>
<span class="n">int_arr_unit</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># формируем список из ключей</span>
<span class="n">int_arr_unit</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
<span class="n">int_arr_task</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># формируем список из первых задач</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">==</span> <span class="p">[]:</span> <span class="c1"># предучматриваем момент если список задач уже пуст</span>
<span class="n">int_arr_task</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span> <span class="c1"># завиваем место пробелом чтобы ниже не выскакивало на диапазон</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">int_arr_task</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">int_arr_unit</span><span class="p">)):</span> <span class="c1"># обьеденяем два списка в один вложенный список [['Алекс 8', 'Выпил 8'], ['Абросимова 9', 'Сьел 9'], [' Алекс 7', ' Вдохнул 7']]</span>
<span class="n">inter_arr_displey</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">int_arr_unit</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">int_arr_task</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">inter_arr_displey</span><span class="p">)</span>
<span class="c1"># это обьединялка в один словарь self.list_unit_and_task_to_display{}</span>
<span class="k">for</span> <span class="n">unit</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span><span class="p">:</span> <span class="c1"># пробегаем по словарю передаем в программу</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">END</span><span class="p">,</span> <span class="n">unit</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">timer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">global</span> <span class="n">count_timer</span><span class="p">,</span> <span class="n">timer_after_id</span><span class="p">,</span> <span class="n">trigger_time</span>
<span class="n">timer_after_id</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">after</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="p">)</span> <span class="c1"># таймер срабатывет каждые 1000 миллисекунд или 1 секунда</span>
<span class="n">count_timer</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">print</span><span class="p">(</span><span class="n">count_timer</span><span class="p">)</span>
<span class="k">if</span> <span class="n">count_timer</span> <span class="o">==</span> <span class="n">trigger_time</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="n">trigger_time</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">timer_check</span><span class="p">()</span>
<span class="n">count_timer</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">def</span> <span class="nf">timer_check</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">global</span> <span class="n">count_timer</span><span class="p">,</span> <span class="n">trigger_time</span>
<span class="bp">self</span><span class="o">.</span><span class="n">timer_count_operations</span> <span class="o">+=</span> <span class="mi">1</span> <span class="c1"># счетчик наличия задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">work_unit</span><span class="p">()</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># бежим по словарю проверяем остались ли не выполненные задачи остались ли не пустые value</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">!=</span> <span class="p">[]:</span> <span class="c1"># останавливаем работу когда все задачи удалены</span>
<span class="bp">self</span><span class="o">.</span><span class="n">count_work_unit</span> <span class="o">+=</span> <span class="mi">1</span> <span class="c1"># почему то не удаляет все задачи срабатывает раньше чем они удалены</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'turn on'</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">count_work_unit</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># если 0 значит задач нет</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_display</span><span class="p">()</span>
<span class="n">root</span><span class="o">.</span><span class="n">after_cancel</span><span class="p">(</span><span class="n">timer_after_id</span><span class="p">)</span> <span class="c1"># останавливаем работу когда все задачи удалены</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'turn off = '</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">)</span>
<span class="n">count_timer</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">count_work_unit</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># продолжаем работу если задачи еще остались</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_display</span><span class="p">()</span> <span class="c1"># обновдяем первое окно</span>
<span class="bp">self</span><span class="o">.</span><span class="n">count_work_unit</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1">#</span>
<span class="n">count_timer</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">def</span> <span class="nf">pause_timer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">root</span><span class="o">.</span><span class="n">after_cancel</span><span class="p">(</span><span class="n">timer_after_id</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">work_unit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># моделируем работу # на каждое срабатывание таймера бежим по рабочему словарю вычитаем из сложности первой задачи производительность юнита</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># бежим по словарю</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">==</span> <span class="p">[]:</span>
<span class="k">continue</span>
<span class="n">lvl_unit</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">key</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">:])</span> <span class="c1"># вытаскиваем из кей значения производительности юнита от строка поэтому тащим срез</span>
<span class="n">lvl_first_task</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="o">-</span><span class="mi">3</span><span class="p">:])</span> <span class="c1"># вытаскиваем производительность задачи , она тоже строка поэтому срез</span>
<span class="n">rest_of_task</span> <span class="o">=</span> <span class="n">lvl_first_task</span> <span class="o">-</span> <span class="n">lvl_unit</span> <span class="c1"># минусуем из сложности производительность</span>
<span class="k">if</span> <span class="n">rest_of_task</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># если задача выполнена те сложность меньше нуля</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_ready_task</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># список выполненных задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_ready_task</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'Unit-'</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">key</span><span class="p">[:</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span> <span class="o">+</span> <span class="s1">', '</span> <span class="o">+</span> <span class="s1">'Task-'</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">][:</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span> <span class="o">+</span> <span class="s1">''</span> <span class="o">+</span> <span class="s1">'t='</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timer_count_operations</span><span class="p">))</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_ready_task</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox_ready_task</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">END</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_ready_task</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># удаляем задачу , она первая в массиве</span>
<span class="c1"># с вероятностью 50 % (выпадет 1 или 2) србатывает фукция сменя первых задач в списке по кругу def change_task</span>
<span class="n">work_unit_count_task</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">!=</span> <span class="p">[]:</span>
<span class="n">work_unit_count_task</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">if</span> <span class="n">work_unit_count_task</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">)</span> <span class="ow">and</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> <span class="c1"># срабатывает если у исполнителя есть хотя бы одна задача</span>
<span class="c1"># с вероятностью 50 % (выпадет 1 или 2) србатывает фукция сменя первых задач в списке по кругу def change_task</span>
<span class="bp">self</span><span class="o">.</span><span class="n">change_task</span><span class="p">()</span> <span class="c1"># меняем в списке list_unit_and_task первые задачи местами</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'change_task'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">)</span>
<span class="k">if</span> <span class="n">rest_of_task</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
<span class="n">inter_list_unit_and_task</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">][:</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span>
<span class="n">inter_list_unit_and_task_1</span> <span class="o">=</span> <span class="n">inter_list_unit_and_task</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">rest_of_task</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">inter_list_unit_and_task_1</span>
<span class="k">def</span> <span class="nf">change_task</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># меняем в списке list_unit_and_task первые задачи местами</span>
<span class="n">count_task</span> <span class="o">=</span> <span class="mi">1</span>
<span class="n">count_key</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">arr_keep_keys</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span>
<span class="n">arr_keep_keys</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
<span class="n">first_task</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">arr_keep_keys</span><span class="p">[</span><span class="n">count_key</span><span class="p">]][</span><span class="mi">0</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">arr_keep_keys</span><span class="p">[</span><span class="n">count_key</span><span class="p">]]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span>
<span class="k">if</span> <span class="n">count_task</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">==</span> <span class="p">[]:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">first_task</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">first_task</span>
<span class="k">break</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">==</span> <span class="p">[]:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">arr_keep_keys</span><span class="p">[</span><span class="n">count_task</span><span class="p">]][</span><span class="mi">0</span><span class="p">])</span>
<span class="n">count_task</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">continue</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">arr_keep_keys</span><span class="p">[</span><span class="n">count_task</span><span class="p">]][</span><span class="mi">0</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">arr_keep_keys</span><span class="p">[</span><span class="n">count_task</span><span class="p">]]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">count_task</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">class</span> <span class="nc">WindowTask</span><span class="p">():</span> <span class="c1"># окно первое со списком задач, нажимаем на исполнителя во втором окне видим список задач юнита</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">main</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_result</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">55</span><span class="p">)</span> <span class="c1"># список с пуктами из листа list</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">main</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">18</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="n">LEFT</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_result</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">window_unit</span> <span class="o">=</span> <span class="n">WindowUnit</span><span class="p">(</span><span class="n">main</span><span class="p">)</span>
<span class="n">main</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="s1">'<Button-1>'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">click_on_key</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">click_on_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
<span class="n">cursor</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_unit</span><span class="o">.</span><span class="n">listbox</span><span class="o">.</span><span class="n">curselection</span><span class="p">())</span> <span class="c1"># Метод curselection() позволяет получить в виде кортежа индексы выбранных элементов экземпляра Listbox.</span>
<span class="k">for</span> <span class="n">keys</span> <span class="ow">in</span> <span class="n">cursor</span><span class="p">:</span>
<span class="c1"># чтобы сделать в столбик вместо Label работать с классом Listbox</span>
<span class="n">inter_list_unit_and_task</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_unit</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="c1"># можно отобразить список задач без {} фигурных скобок инф в Tkinter2</span>
<span class="k">if</span> <span class="bp">True</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_result</span><span class="p">[</span><span class="s1">'text'</span><span class="p">]</span> <span class="o">=</span> <span class="n">inter_list_unit_and_task</span><span class="p">[</span><span class="n">keys</span><span class="p">]</span>
<span class="k">class</span> <span class="nc">Task</span><span class="p">():</span> <span class="c1"># класс задачи</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sum_min</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">sum_max</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">min_complex</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">max_complex</span><span class="o">=</span><span class="mi">250</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_task_min</span> <span class="o">=</span> <span class="n">sum_min</span> <span class="c1"># количество задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_task_max</span> <span class="o">=</span> <span class="n">sum_max</span> <span class="c1"># количество задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">min_complexity_task</span> <span class="o">=</span> <span class="n">min_complex</span> <span class="c1"># мин сложность задачи</span>
<span class="bp">self</span><span class="o">.</span><span class="n">max_complexity_task</span> <span class="o">=</span> <span class="n">max_complex</span> <span class="c1"># макс сложность задачи</span>
<span class="k">def</span> <span class="nf">task_generate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># генерируем список задач вида "лудит 5" случайным образом, где Лудит вид задачи а 5 ее сложность</span>
<span class="n">task_names</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Пашет'</span><span class="p">,</span> <span class="s1">'Сеет'</span><span class="p">,</span> <span class="s1">'Собирает'</span><span class="p">,</span> <span class="s1">'Починяет'</span><span class="p">,</span> <span class="s1">'Лудит'</span><span class="p">,</span> <span class="s1">'Паяяет'</span><span class="p">,</span> <span class="s1">'Культивирует'</span><span class="p">,</span> <span class="s1">'Копает'</span><span class="p">,</span> <span class="s1">'Закапывает'</span><span class="p">,</span> <span class="s1">'Откапывает'</span><span class="p">,</span> <span class="s1">'Режет'</span><span class="p">,</span> <span class="s1">'Чистит'</span><span class="p">,</span> <span class="s1">'Полирует'</span><span class="p">,</span> <span class="s1">'Выращивает'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_task</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sum_task_min</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sum_task_max</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arr_task</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sum_task</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arr_task</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">task_names</span><span class="p">)</span> <span class="o">+</span> <span class="s2">" "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">min_complexity_task</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_complexity_task</span><span class="p">))))</span>
<span class="k">class</span> <span class="nc">Setting</span><span class="p">():</span> <span class="c1"># окно настройка</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">main</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_set</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Setting'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">window_setting</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_set</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">window_setting</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># открываем окно с настройкаами</span>
<span class="k">global</span> <span class="n">turn_on_setting</span><span class="p">,</span> <span class="n">trigger_time</span>
<span class="n">turn_on_setting</span> <span class="o">=</span> <span class="mi">1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">window_open</span> <span class="o">=</span> <span class="n">Toplevel</span><span class="p">()</span> <span class="c1"># инициализируем новое окно</span>
<span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'Setting'</span><span class="p">)</span> <span class="c1"># титул окна</span>
<span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="o">.</span><span class="n">geometry</span><span class="p">(</span><span class="s1">'800x200'</span><span class="p">)</span> <span class="c1"># размер окна</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_timer_trigger</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_timer_trigger</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">entry_timer_trigger</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">entry_timer_trigger</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="c1"># минимальное и максимальное количество исполнителей</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_min</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">justify</span><span class="o">=</span><span class="s1">'left'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_min</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_max</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">12</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_max</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="c1"># минимальная и максимальная производительность исполнителя</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_min</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_min</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_max</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">12</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_max</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="c1"># минимальное и максимальное количество задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_min</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_min</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_max</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">12</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_max</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="c1"># минимальная и максимальная сложность задачи</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_min</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_min</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_max</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">12</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_max</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="c1"># кнопки ок и cancel</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_ok</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'OK'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">transit_date</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># создаем кнопку ОК</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_cancel</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Cancel'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">close_win_setting</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_cancel</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># создаем кнопку кенсел с командой закрытия окна</span>
<span class="k">def</span> <span class="nf">transit_date</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">global</span> <span class="n">trigger_time</span>
<span class="n">trigger_time</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">entry_timer_trigger</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
<span class="n">WindowUnit</span><span class="o">.</span><span class="n">sum_unit_max</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_max</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
<span class="n">WindowUnit</span><span class="o">.</span><span class="n">sum_unit_min</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_min</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
<span class="n">WindowUnit</span><span class="o">.</span><span class="n">min_speed_unit</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_min</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
<span class="n">WindowUnit</span><span class="o">.</span><span class="n">max_speed_unit</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_max</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
<span class="n">Task</span><span class="o">.</span><span class="n">sum_task_min</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_min</span><span class="o">.</span><span class="n">get</span><span class="p">())</span> <span class="c1"># количество задач</span>
<span class="n">Task</span><span class="o">.</span><span class="n">sum_task_max</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_max</span><span class="o">.</span><span class="n">get</span><span class="p">())</span> <span class="c1"># количество задач</span>
<span class="n">Task</span><span class="o">.</span><span class="n">min_complexity_task</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_min</span><span class="o">.</span><span class="n">get</span><span class="p">())</span> <span class="c1"># мин сложность задачи</span>
<span class="n">Task</span><span class="o">.</span><span class="n">max_complexity_task</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_max</span><span class="o">.</span><span class="n">get</span><span class="p">())</span> <span class="c1"># макс сложность задачи</span>
<span class="bp">self</span><span class="o">.</span><span class="n">close_win_setting</span><span class="p">()</span> <span class="c1"># выполняем передачу в функции и закрываем окно</span>
<span class="k">def</span> <span class="nf">close_win_setting</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># функция закрывающая окно по кнопке cancel</span>
<span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span> <span class="c1"># команда закрывающая окно</span>
<span class="n">window_unit</span> <span class="o">=</span> <span class="n">WindowUnit</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="n">WindowTask</span> <span class="o">=</span> <span class="n">WindowTask</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="n">ButtonSetting</span> <span class="o">=</span> <span class="n">Setting</span><span class="p">(</span><span class="n">root</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>
Общий :: Python для новичков :: В Tkinter не получается передать значение в метод timer()
2020-05-21T20:29:37+03:00PEHDOM210039дык у вас же время жестко зашито<br/><div class="code"><pre> <span class="k">def</span> <span class="nf">timer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timer_trigger</span><span class="o">=</span><span class="mi">2</span><span class="p">):</span> <span class="c1"># функция запускается с параметром по умолчанию timer_trigger=2 если не указано иное</span>
<span class="bp">self</span><span class="o">.</span><span class="n">trigger_time</span> <span class="o">=</span> <span class="n">timer_trigger</span> <span class="c1"># переписываем self.trigger_time "зашитым" значением</span>
<span class="o">.....</span>
<span class="n">timer_after_id</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">after</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="p">)</span> <span class="c1"># запускаем повторно функцию без аргументов, тоесть с значением timer_trigger=2</span>
</pre></div>как варинт убрать из аргументов timer_trigger=2 ваапще нафик,<br/><div class="code"><pre> <span class="k">def</span> <span class="nf">timer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="o">.....</span>
<span class="n">timer_after_id</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">after</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="p">)</span>
</pre></div><br/> а ориентироваться исключитально на атрибут класса self.trigger_time. меняете self.trigger_time меняется время срабатывания.
Общий :: Python для новичков :: В Tkinter не получается передать значение в метод timer()
2020-05-21T16:52:36+03:00alesi210032Здравствуйте, вопрос: мне необходимо ввести новое значение переменной self.trigger_time функции<br/>def timer(self, timer_trigger=2): чтобы таймер срабатывал не через две секунды , а скажем больше если я меняю вручную значение def timer(self, timer_trigger=<strong>4</strong>): то все нормально. Но мне запустить def timer из функции def unit_and_task_arr(self): со значение по умолчанию def timer() из этой функции исполняется, но мне нужно ввести другое значение и чтобы я не вводил def timer() работает со значением по умолчанию? <br/>Например сейчас в self.timer(4) введено значение 4 , но таймер отрабатывает все равно 2<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">random</span>
<span class="kn">import</span> <span class="nn">time</span>
<span class="c1"># КОЛИЧЕСТВА ЗАДАЧ ДОЛЖНО ХВАТАТЬ НА ВСЕХ ПРОИЗВОДИТЕЛЕЙ</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="s1">'Round robin'</span><span class="p">)</span> <span class="c1"># надпись на верху</span>
<span class="n">root</span><span class="o">.</span><span class="n">geometry</span><span class="p">(</span><span class="s1">'850x500+300+200'</span><span class="p">)</span> <span class="c1"># ширина=500, высота=400, x=300, y=200 размер окна</span>
<span class="n">root</span><span class="o">.</span><span class="n">resizable</span><span class="p">(</span><span class="bp">True</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span> <span class="c1"># размер окна может быть изменён только по горизонтали</span>
<span class="n">timer_after_id</span> <span class="o">=</span> <span class="s1">''</span> <span class="c1"># переменная таймера ведет счет</span>
<span class="n">count_timer</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># счетчик таймера</span>
<span class="n">turn_on_setting</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># флажок включения введения данных из окна сеттиннг чтобы вводить данные из него</span>
<span class="k">class</span> <span class="nc">WindowUnit</span><span class="p">():</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">main</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox</span> <span class="o">=</span> <span class="n">Listbox</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">35</span><span class="p">,</span> <span class="n">selectmode</span><span class="o">=</span><span class="n">EXTENDED</span><span class="p">)</span> <span class="c1"># список с пунктами из листа list_performer список исполнителей и задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">main</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">18</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="n">LEFT</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox_ready_task</span> <span class="o">=</span> <span class="n">Listbox</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">45</span><span class="p">,</span> <span class="n">selectmode</span><span class="o">=</span><span class="n">EXTENDED</span><span class="p">)</span> <span class="c1"># список выполненных задач с пунктами из листа list</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call_ready_task</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">main</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">25</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="n">LEFT</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call_ready_task</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox_ready_task</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_new</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'New'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">unit_and_task_arr</span><span class="p">)</span> <span class="c1"># кнопка New на первом листе</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_new</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">sticky</span><span class="o">=</span><span class="s1">'s'</span><span class="p">)</span> <span class="c1"># расположение кнопки New</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_pause</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Pause'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">pause_timer</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_pause</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_new</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Exit'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">close_main_win</span><span class="p">)</span> <span class="c1"># кнопка New на первом листе</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_new</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">sticky</span><span class="o">=</span><span class="s1">'n'</span><span class="p">)</span> <span class="c1"># расположение кнопки New</span>
<span class="c1"># self.unit = Unit() # ссылка на класс исполнители</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span> <span class="o">=</span> <span class="n">Task</span><span class="p">()</span> <span class="c1"># ссылка на класс задачи</span>
<span class="bp">self</span><span class="o">.</span><span class="n">setting</span> <span class="o">=</span> <span class="n">Setting</span><span class="p">(</span><span class="n">main</span><span class="p">)</span> <span class="c1"># ссылка на класс Setting</span>
<span class="c1"># время срабатывания</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># массив для хранения исполнителей и задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">count_work_unit</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># счетчик остатка задач в функции work_unit</span>
<span class="bp">self</span><span class="o">.</span><span class="n">timer_count_operations</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># счетчик количества срабатываний таймера</span>
<span class="bp">self</span><span class="o">.</span><span class="n">turn_on_setting</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># флажок включения окна сеттиннг чтобы вводить данные из него</span>
<span class="k">def</span> <span class="nf">close_main_win</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># функция закрывающая окно по кнопке cancel</span>
<span class="n">root</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span> <span class="c1"># команда закрывающая окно</span>
<span class="k">def</span> <span class="nf">unit_and_task_arr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># формируем два списока исполнителей и задач self.list_unit_and_task-для работы и self.list_unit_and_task_to_display для отображения</span>
<span class="k">global</span> <span class="n">turn_on_setting</span>
<span class="k">if</span> <span class="n">turn_on_setting</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">unit_generate</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span><span class="o">.</span><span class="n">task_generate</span><span class="p">()</span>
<span class="k">if</span> <span class="n">turn_on_setting</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">unit_generate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_min</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_max</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">min_speed_unit</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_speed_unit</span><span class="p">)</span> <span class="c1"># запускаем в классе Unit функцию unit_generate(), формируем список исполнителей</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span> <span class="o">=</span> <span class="n">Task</span><span class="p">(</span><span class="n">Task</span><span class="o">.</span><span class="n">sum_task_min</span><span class="p">,</span> <span class="n">Task</span><span class="o">.</span><span class="n">sum_task_max</span><span class="p">,</span> <span class="n">Task</span><span class="o">.</span><span class="n">min_complexity_task</span><span class="p">,</span> <span class="n">Task</span><span class="o">.</span><span class="n">max_complexity_task</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span><span class="o">.</span><span class="n">task_generate</span><span class="p">()</span> <span class="c1"># # запускаем в классе Task функцию task_generate(), формируем список задач</span>
<span class="n">shift</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">for</span> <span class="n">keys</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arr_unit</span><span class="p">:</span> <span class="c1"># формируем рабочий словарь self.list_unit_and_task вида {'Ivan 7': ['Пашет', 'Лудит', 'Закапывает'], 'Vasya 5': ['Сеет', 'Паяяет', 'Откапывает']}</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">keys</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">task</span><span class="o">.</span><span class="n">arr_task</span><span class="p">[</span><span class="n">val</span><span class="p">]</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">shift</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">task</span><span class="o">.</span><span class="n">arr_task</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arr_unit</span><span class="p">))]</span> <span class="c1"># генератор списков в словаре</span>
<span class="c1"># Первому ключу из self.unit.arr_unit присваивается первое значение из self.task.arr_task,</span>
<span class="c1"># второму -- вторая и т. д. N+1 - я задача снова назначается первому ключу, и так далее по кругу.</span>
<span class="n">shift</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="c1"># формируем отдельный словарь для отображения в программе исполнитель и первая завдача в списке</span>
<span class="n">int_arr_unit</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># формируем список из ключей</span>
<span class="n">int_arr_unit</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
<span class="n">int_arr_task</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># формируем список из первых задач</span>
<span class="k">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">)</span>
<span class="n">int_arr_task</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">int_arr_unit</span><span class="p">)):</span> <span class="c1"># обьеденяем два списка в один вложенный список [['Алекс 8', 'Выпил 8'], ['Абросимова 9', 'Сьел 9'], [' Алекс 7', ' Вдохнул 7']]</span>
<span class="n">inter_arr_displey</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">int_arr_unit</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">int_arr_task</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">inter_arr_displey</span><span class="p">)</span>
<span class="c1"># это обьединялка в один словарь self.list_unit_and_task_to_display{}</span>
<span class="k">for</span> <span class="n">unit</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span><span class="p">:</span> <span class="c1"># пробегаем по словарю передаем в программу</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">END</span><span class="p">,</span> <span class="n">unit</span><span class="p">)</span>
<span class="k">if</span> <span class="n">turn_on_setting</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="p">()</span>
<span class="k">if</span> <span class="n">turn_on_setting</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="c1"># запускаем функцию работу таймера</span>
<span class="k">def</span> <span class="nf">unit_generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sum_min</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">sum_max</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">min_speed</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">max_speed</span><span class="o">=</span><span class="mi">99</span><span class="p">):</span> <span class="c1"># генерируем список исполнитерлей вида "Вася 5" случайным образом, где вася имя спонителя а 5 его производительность</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_min</span> <span class="o">=</span> <span class="n">sum_min</span> <span class="c1"># количество исполнителей</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_max</span> <span class="o">=</span> <span class="n">sum_max</span>
<span class="bp">self</span><span class="o">.</span><span class="n">min_speed_unit</span> <span class="o">=</span> <span class="n">min_speed</span> <span class="c1"># мин производительность</span>
<span class="bp">self</span><span class="o">.</span><span class="n">max_speed_unit</span> <span class="o">=</span> <span class="n">max_speed</span> <span class="c1"># макс производительность</span>
<span class="n">unit_names</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Варвара'</span><span class="p">,</span> <span class="s1">'Вася'</span><span class="p">,</span> <span class="s1">'Наталья'</span><span class="p">,</span> <span class="s1">'Лидия'</span><span class="p">,</span> <span class="s1">'Федор'</span><span class="p">,</span> <span class="s1">'Петя'</span><span class="p">,</span> <span class="s1">'Агафона'</span><span class="p">,</span> <span class="s1">'Алла'</span><span class="p">,</span> <span class="s1">'Светлана'</span><span class="p">,</span> <span class="s1">'Рената'</span><span class="p">,</span> <span class="s1">'Анна'</span><span class="p">,</span> <span class="s1">'Алекс'</span><span class="p">,</span> <span class="s1">'Жанна'</span><span class="p">,</span> <span class="s1">'Пол'</span><span class="p">,</span> <span class="s1">'Мария'</span><span class="p">,</span> <span class="s1">'Тор'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_unit</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_min</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sum_unit_max</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arr_unit</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sum_unit</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arr_unit</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">unit_names</span><span class="p">)</span> <span class="o">+</span> <span class="s2">" "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">min_speed_unit</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_speed_unit</span><span class="p">)))</span>
<span class="k">def</span> <span class="nf">update_display</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># обновляем отображение в первом окне при срабатывани таймера</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">END</span><span class="p">)</span> <span class="c1"># очищаем self.listbox чтобы заново заполнить его</span>
<span class="n">int_arr_unit</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># формируем список из ключей</span>
<span class="n">int_arr_unit</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
<span class="n">int_arr_task</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># формируем список из первых задач</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">==</span> <span class="p">[]:</span> <span class="c1"># предучматриваем момент если список задач уже пуст</span>
<span class="n">int_arr_task</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span> <span class="c1"># завиваем место пробелом чтобы ниже не выскакивало на диапазон</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">int_arr_task</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">int_arr_unit</span><span class="p">)):</span> <span class="c1"># обьеденяем два списка в один вложенный список [['Алекс 8', 'Выпил 8'], ['Абросимова 9', 'Сьел 9'], [' Алекс 7', ' Вдохнул 7']]</span>
<span class="n">inter_arr_displey</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">int_arr_unit</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">int_arr_task</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">inter_arr_displey</span><span class="p">)</span>
<span class="c1"># это обьединялка в один словарь self.list_unit_and_task_to_display{}</span>
<span class="k">for</span> <span class="n">unit</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task_to_display</span><span class="p">:</span> <span class="c1"># пробегаем по словарю передаем в программу</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">END</span><span class="p">,</span> <span class="n">unit</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">timer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timer_trigger</span><span class="o">=</span><span class="mi">2</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">trigger_time</span> <span class="o">=</span> <span class="n">timer_trigger</span>
<span class="k">global</span> <span class="n">timer_after_id</span><span class="p">,</span> <span class="n">count_timer</span>
<span class="n">timer_after_id</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">after</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">timer</span><span class="p">)</span> <span class="c1"># таймер срабатывет каждые 1000 миллисекунд или 1 секунда</span>
<span class="n">count_timer</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">print</span><span class="p">(</span><span class="n">count_timer</span><span class="p">)</span>
<span class="k">if</span> <span class="n">count_timer</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">trigger_time</span><span class="p">:</span> <span class="c1">#</span>
<span class="bp">self</span><span class="o">.</span><span class="n">timer_count_operations</span> <span class="o">+=</span> <span class="mi">1</span> <span class="c1"># счетчик наличия задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">work_unit</span><span class="p">()</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># бежим по словарю проверяем остались ли не выполненные задачи остались ли не пустые value</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">!=</span> <span class="p">[]:</span> <span class="c1"># останавливаем работу когда все задачи удалены</span>
<span class="bp">self</span><span class="o">.</span><span class="n">count_work_unit</span> <span class="o">+=</span> <span class="mi">1</span> <span class="c1"># почему то не удаляет все задачи срабатывает раньше чем они удалены</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'turn on'</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">count_work_unit</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># если 0 значит задач нет</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_display</span><span class="p">()</span>
<span class="n">root</span><span class="o">.</span><span class="n">after_cancel</span><span class="p">(</span><span class="n">timer_after_id</span><span class="p">)</span> <span class="c1"># останавливаем работу когда все задачи удалены</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'turn off = '</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">)</span>
<span class="n">count_timer</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">count_work_unit</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span><span class="c1">#продолжаем работу если задачи еще остались</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_display</span><span class="p">()</span> <span class="c1"># обновдяем первое окно</span>
<span class="bp">self</span><span class="o">.</span><span class="n">count_work_unit</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1">#</span>
<span class="n">count_timer</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">def</span> <span class="nf">pause_timer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">root</span><span class="o">.</span><span class="n">after_cancel</span><span class="p">(</span><span class="n">timer_after_id</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">work_unit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># моделируем работу # на каждое срабатывание таймера бежим по рабочему словарю вычитаем из сложности первой задачи производительность юнита</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span> <span class="c1"># бежим по словарю</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">==</span> <span class="p">[]:</span>
<span class="k">continue</span>
<span class="n">lvl_unit</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">key</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">:])</span> <span class="c1"># вытаскиваем из кей значения производительности юнита от строка поэтому тащим срез</span>
<span class="n">lvl_first_task</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="o">-</span><span class="mi">3</span><span class="p">:])</span> <span class="c1"># вытаскиваем производительность задачи , она тоже строка поэтому срез</span>
<span class="n">rest_of_task</span> <span class="o">=</span> <span class="n">lvl_first_task</span> <span class="o">-</span> <span class="n">lvl_unit</span> <span class="c1"># минусуем из сложности производительность</span>
<span class="k">if</span> <span class="n">rest_of_task</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># если задача выполнена те сложность меньше нуля</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_ready_task</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># список выполненных задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_ready_task</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'Unit-'</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">key</span><span class="p">[:</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span> <span class="o">+</span> <span class="s1">', '</span> <span class="o">+</span> <span class="s1">'Task-'</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">][:</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span><span class="o">+</span><span class="s1">''</span><span class="o">+</span><span class="s1">'t='</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timer_count_operations</span><span class="p">))</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_ready_task</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listbox_ready_task</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">END</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_ready_task</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># удаляем задачу , она первая в массиве</span>
<span class="c1">#с вероятностью 50 % (выпадет 1 или 2) србатывает фукция сменя первых задач в списке по кругу def change_task</span>
<span class="n">work_unit_count_task</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">!=</span> <span class="p">[]:</span>
<span class="n">work_unit_count_task</span> <span class="o">+=</span><span class="mi">1</span>
<span class="k">if</span> <span class="n">work_unit_count_task</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">)</span> <span class="ow">and</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> <span class="c1"># срабатывает если у исполнителя есть хотя бы одна задача</span>
<span class="c1"># с вероятностью 50 % (выпадет 1 или 2) србатывает фукция сменя первых задач в списке по кругу def change_task</span>
<span class="bp">self</span><span class="o">.</span><span class="n">change_task</span><span class="p">()</span> <span class="c1"># меняем в списке list_unit_and_task первые задачи местами</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'change_task'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">)</span>
<span class="k">if</span> <span class="n">rest_of_task</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
<span class="n">inter_list_unit_and_task</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">][:</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span>
<span class="n">inter_list_unit_and_task_1</span> <span class="o">=</span> <span class="n">inter_list_unit_and_task</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">rest_of_task</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">inter_list_unit_and_task_1</span>
<span class="k">def</span> <span class="nf">change_task</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># меняем в списке list_unit_and_task первые задачи местами</span>
<span class="n">count_task</span> <span class="o">=</span> <span class="mi">1</span>
<span class="n">count_key</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">arr_keep_keys</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span>
<span class="n">arr_keep_keys</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
<span class="n">first_task</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">arr_keep_keys</span><span class="p">[</span><span class="n">count_key</span><span class="p">]][</span><span class="mi">0</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">arr_keep_keys</span><span class="p">[</span><span class="n">count_key</span><span class="p">]]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">:</span>
<span class="k">if</span> <span class="n">count_task</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">==</span> <span class="p">[]:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">first_task</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">first_task</span>
<span class="k">break</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">==</span> <span class="p">[]:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">arr_keep_keys</span><span class="p">[</span><span class="n">count_task</span><span class="p">]][</span><span class="mi">0</span><span class="p">])</span>
<span class="n">count_task</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">continue</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">arr_keep_keys</span><span class="p">[</span><span class="n">count_task</span><span class="p">]][</span><span class="mi">0</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="p">[</span><span class="n">arr_keep_keys</span><span class="p">[</span><span class="n">count_task</span><span class="p">]]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">count_task</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">class</span> <span class="nc">WindowTask</span><span class="p">():</span> <span class="c1"># окно первое со списком задач, нажимаем на исполнителя во втором окне видим список задач юнита</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">main</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_result</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">55</span><span class="p">)</span> <span class="c1"># список с пуктами из листа list</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">main</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">18</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="n">LEFT</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_call</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_result</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">window_unit</span> <span class="o">=</span> <span class="n">WindowUnit</span><span class="p">(</span><span class="n">main</span><span class="p">)</span>
<span class="n">main</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="s1">'<Button-1>'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">click_on_key</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">click_on_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
<span class="n">cursor</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_unit</span><span class="o">.</span><span class="n">listbox</span><span class="o">.</span><span class="n">curselection</span><span class="p">())</span> <span class="c1"># Метод curselection() позволяет получить в виде кортежа индексы выбранных элементов экземпляра Listbox.</span>
<span class="k">for</span> <span class="n">keys</span> <span class="ow">in</span> <span class="n">cursor</span><span class="p">:</span>
<span class="c1"># чтобы сделать в столбик вместо Label работать с классом Listbox</span>
<span class="n">inter_list_unit_and_task</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_unit</span><span class="o">.</span><span class="n">list_unit_and_task</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="c1"># можно отобразить список задач без {} фигурных скобок инф в Tkinter2</span>
<span class="k">if</span> <span class="bp">True</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_result</span><span class="p">[</span><span class="s1">'text'</span><span class="p">]</span> <span class="o">=</span> <span class="n">inter_list_unit_and_task</span><span class="p">[</span><span class="n">keys</span><span class="p">]</span>
<span class="k">class</span> <span class="nc">Task</span><span class="p">():</span> <span class="c1"># класс задачи</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sum_min</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">sum_max</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">min_complex</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">max_complex</span><span class="o">=</span><span class="mi">250</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_task_min</span> <span class="o">=</span> <span class="n">sum_min</span> <span class="c1"># количество задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_task_max</span> <span class="o">=</span> <span class="n">sum_max</span> <span class="c1"># количество задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">min_complexity_task</span> <span class="o">=</span> <span class="n">min_complex</span> <span class="c1"># мин сложность задачи</span>
<span class="bp">self</span><span class="o">.</span><span class="n">max_complexity_task</span> <span class="o">=</span> <span class="n">max_complex</span> <span class="c1"># макс сложность задачи</span>
<span class="k">def</span> <span class="nf">task_generate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># генерируем список задач вида "лудит 5" случайным образом, где Лудит вид задачи а 5 ее сложность</span>
<span class="n">task_names</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Пашет'</span><span class="p">,</span> <span class="s1">'Сеет'</span><span class="p">,</span> <span class="s1">'Собирает'</span><span class="p">,</span> <span class="s1">'Починяет'</span><span class="p">,</span> <span class="s1">'Лудит'</span><span class="p">,</span> <span class="s1">'Паяяет'</span><span class="p">,</span> <span class="s1">'Культивирует'</span><span class="p">,</span> <span class="s1">'Копает'</span><span class="p">,</span> <span class="s1">'Закапывает'</span><span class="p">,</span> <span class="s1">'Откапывает'</span><span class="p">,</span> <span class="s1">'Режет'</span><span class="p">,</span> <span class="s1">'Чистит'</span><span class="p">,</span> <span class="s1">'Полирует'</span><span class="p">,</span> <span class="s1">'Выращивает'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sum_task</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sum_task_min</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sum_task_max</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arr_task</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sum_task</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arr_task</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">task_names</span><span class="p">)</span> <span class="o">+</span> <span class="s2">" "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">min_complexity_task</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_complexity_task</span><span class="p">))))</span>
<span class="k">class</span> <span class="nc">Setting</span><span class="p">():</span> <span class="c1"># окно настройка</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">main</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_set</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Setting'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">window_setting</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_set</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">window_setting</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># открываем окно с настройкаами</span>
<span class="k">global</span> <span class="n">turn_on_setting</span>
<span class="n">turn_on_setting</span> <span class="o">=</span> <span class="mi">1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">window_open</span> <span class="o">=</span> <span class="n">Toplevel</span><span class="p">()</span> <span class="c1"># инициализируем новое окно</span>
<span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'Setting'</span><span class="p">)</span> <span class="c1"># титул окна</span>
<span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="o">.</span><span class="n">geometry</span><span class="p">(</span><span class="s1">'800x200'</span><span class="p">)</span> <span class="c1"># размер окна</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_timer_trigger</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_timer_trigger</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">entry_timer_trigger</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">entry_timer_trigger</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="c1"># минимальное и максимальное количество исполнителей</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_min</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">justify</span><span class="o">=</span><span class="s1">'left'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_min</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_max</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">12</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_max</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="c1"># минимальная и максимальная производительность исполнителя</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_min</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_min</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_max</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">12</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_max</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="c1"># минимальное и максимальное количество задач</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_min</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_min</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_max</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">12</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_max</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="c1"># минимальная и максимальная сложность задачи</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_min</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_min</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_min</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_max</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</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">borderwidth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">12</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">justify</span><span class="o">=</span><span class="s1">'right'</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># название поля ввода</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_max</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_max</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># создаем окно ввода</span>
<span class="c1"># кнопки ок и cancel</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_ok</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'OK'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">transit_date</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># создаем кнопку ОК</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_cancel</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Cancel'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">close_win_setting</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">button_cancel</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># создаем кнопку кенсел с командой закрытия окна</span>
<span class="k">def</span> <span class="nf">transit_date</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">WindowUnit</span><span class="o">.</span><span class="n">trigger_time</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">entry_timer_trigger</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
<span class="n">WindowUnit</span><span class="o">.</span><span class="n">sum_unit_max</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_max</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
<span class="n">WindowUnit</span><span class="o">.</span><span class="n">sum_unit_min</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_number_unit_min</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
<span class="n">WindowUnit</span><span class="o">.</span><span class="n">min_speed_unit</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_min</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
<span class="n">WindowUnit</span><span class="o">.</span><span class="n">max_speed_unit</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_level_perform_max</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
<span class="n">Task</span><span class="o">.</span><span class="n">sum_task_min</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_min</span><span class="o">.</span><span class="n">get</span><span class="p">())</span> <span class="c1"># количество задач</span>
<span class="n">Task</span><span class="o">.</span><span class="n">sum_task_max</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_amount_task_max</span><span class="o">.</span><span class="n">get</span><span class="p">())</span> <span class="c1"># количество задач</span>
<span class="n">Task</span><span class="o">.</span><span class="n">min_complexity_task</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_min</span><span class="o">.</span><span class="n">get</span><span class="p">())</span> <span class="c1"># мин сложность задачи</span>
<span class="n">Task</span><span class="o">.</span><span class="n">max_complexity_task</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field_complexity_task_max</span><span class="o">.</span><span class="n">get</span><span class="p">())</span><span class="c1"># макс сложность задачи</span>
<span class="bp">self</span><span class="o">.</span><span class="n">close_win_setting</span><span class="p">()</span> <span class="c1"># выполняем передачу в функции и закрываем окно</span>
<span class="k">def</span> <span class="nf">close_win_setting</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># функция закрывающая окно по кнопке cancel</span>
<span class="bp">self</span><span class="o">.</span><span class="n">window_open</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span> <span class="c1"># команда закрывающая окно</span>
<span class="n">window_unit</span> <span class="o">=</span> <span class="n">WindowUnit</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="n">WindowTask</span> <span class="o">=</span> <span class="n">WindowTask</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
<span class="n">ButtonSetting</span> <span class="o">=</span> <span class="n">Setting</span><span class="p">(</span><span class="n">root</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>