Уведомления

Группа в Telegram: @pythonsu

#1 Март 21, 2013 17:39:13

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

tkinter идет процесс -окно висит

При нажатии кнопки программа думает и окно висит пока не выдаст результат,как показать что программа не зависла ,а всего лишь в процессе работы(юзеру)
или индикатор прикрутить?

Офлайн

#2 Март 21, 2013 18:57:29

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

tkinter идет процесс -окно висит

1. Разбить процес, который грузит машину, на несколько этапов.
2. Получить последовательное процентное выполнение процесса. Например, у меня пять этапов. Первый прошел - 20%, второй - 40% и т.п.
3. Повесить механизм отображения процентов выполнения на какой-нибуть виджет (можно на canvas с последовательной закраской, чтобы визуально определить процент).
4. После выполнения каждого этапа вызывать функцию, которая приводит к изменению внешнего вида этого виджета.
5. Не забыть в функции вызвать метод виджет.update(), чтобы изменения вступали в силу сразу после выполнения определенного этапа, а не после прохода всех этапов.
Нужен пример, пишите…



Отредактировано 4kpt (Март 21, 2013 18:58:35)

Офлайн

#3 Март 21, 2013 19:04:35

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

tkinter идет процесс -окно висит

Очень нужен пример,не могу закончить программу…так то все готово ,но это зависание…

Офлайн

#4 Март 21, 2013 19:05:28

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

tkinter идет процесс -окно висит

Ждите минут 10… Сейчас напедалирую…



Отредактировано 4kpt (Март 21, 2013 19:05:45)

Офлайн

#5 Март 21, 2013 19:10:00

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

tkinter идет процесс -окно висит

4kpt
Ждите минут 10… Сейчас напедалирую…
Ваш принцип я понял,только я пытался делать по другому,не как Вы
пытался вызвать при нажатии на кнопку другое модальное немодальное окно с надписью
я так понял процесс один разбить на несколько одновременных процессов?

Отредактировано sanodin (Март 21, 2013 19:21:18)

Офлайн

#6 Март 21, 2013 19:26:34

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

tkinter идет процесс -окно висит

Вот просто с цифрами процента. Числа нужно подставлять исходя из алгоритма, который я привел Вам выше.

# -*- coding: utf-8 -*-
import Tkinter
import time
root = Tkinter.Tk()
root.geometry("200x200+100+100")
def update_lab_digit(lab_digit, pos):
    lab_digit["text"] = "{0}%".format(20*pos)
def start_work(event=None):
    but["relief"] = "raised"
    fr_in = Tkinter.Frame(root)
    fr_in.place(relx=0.5, rely=0.3, anchor="center")
    lab_text = Tkinter.Label(fr_in, text="Process is execute: ")
    lab_text.pack(side="left")
    lab_digit = Tkinter.Label(fr_in, text="0%")
    lab_digit.pack(side="left")
    for i in xrange(1, 6):
        root.update()
        time.sleep(0.5)
        update_lab_digit(lab_digit, i)
but = Tkinter.Button(root, text="Press")
but.bind("<ButtonRelease-1>", start_work)
but.place(relx=0.5, rely=0.7, anchor="center")
root.mainloop()



Офлайн

#7 Март 21, 2013 19:29:56

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

tkinter идет процесс -окно висит

sanodin
я так понял процесс один разбить на несколько одновременных процессов?
Неверно. Необходимо процесс разбить на этапы. В моем примере этапами являются вызовы функции time.sleep(0.5), а действие всего процесса - это работа всего цикла. Я просто в цикл вклиниваю вызов функции update_lab_digit(lab_digit, i). Это позволяет мне избежать “зависания экрана” с точки зрения пользователя.



Отредактировано 4kpt (Март 21, 2013 19:31:20)

Офлайн

#8 Март 21, 2013 19:31:07

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

tkinter идет процесс -окно висит

4kpt
понял , иду крутить пример
спасибо
кстати, xrange в третьей ветке нет что ли?
я просто пока установил третий пайтон ,чтоб не мучаться с кодировками
ладно range пойдет

Отредактировано sanodin (Март 21, 2013 19:36:35)

Офлайн

#9 Март 21, 2013 19:32:24

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

tkinter идет процесс -окно висит

Не за что. По результатам отпишитесь. Получилось или нет…



Офлайн

#10 Март 21, 2013 19:38:32

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

tkinter идет процесс -окно висит

Тройку не использую. Даже не знаю, что там есть, а чего нет :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version