Форум сайта python.su
4kpt
этапами являются вызовы функции time.sleep(0.5), а действие всего процесса - это работа всего цикла. Я просто в цикл вклиниваю вызов функции update_lab_digit(lab_digit, i).
Офлайн
Рад, что подошло :)
Офлайн
а если процесс разбить на на несколько (5) и каждый вклинивать между update_lab_digit(lab_digit, i)
проц1
update_lab_digit(lab_digit, i)
проц2
update_lab_digit(lab_digit, i)
проц3
update_lab_digit(lab_digit, i)
и тд?
то есть не многопоточность а просто обработку (файла допустим) разбить файл на пять частей и по обработке каждого индикатор обновлять
Отредактировано sanodin (Март 21, 2013 21:10:37)
Офлайн
Наконец-то Вы поняли идею. Конечно. Так делать и нужно. Но процессы должны следовать друг за другом, тогда в этом есть смысл. Выполняется проц1, отображается информация (Х% выполнения). Выполняется проц2, снова отображается информация (Х*2% выполнения)…
Но старайтесь разбивать основной процесс хоть приблизительно на равные части, иначе будет бред. Равные, не в смысле строк кода, а в смысле времени выполнения.
Отредактировано 4kpt (Март 21, 2013 21:54:05)
Офлайн
Если основной процесс выполнения программы нельзя разбить на равные части, то рекомендую делать либо принудительную задержку в малых (по-времени) частях или показывать процент неравномерно (с разным интервалом). Необходимо помнить, что для пользователя индикатор выполнения всегда !!!ВСЕГДА!!! ассоциируется со временем, а не с реальным процессом выполнеия задачи. Т.е. если вы открываете два файла, один 1 мб, а другой 10 мб, то после выполнения открытия первого выводить 50% нельзя (хотя оно, вроде-бы и логично), так как пользователь будет думать, что уже прошла половина 50% времени. А реально прошло только где-то 10%. Необходимо запускать обновление процента несколько раз при открытии второго файла…
Посему индикаторы процесса винды так всех бесят :)
Отредактировано 4kpt (Март 21, 2013 22:04:33)
Офлайн
появилась идея в файле сделать метки типа “*” и на них выполнять функцию индикатора
сам файл состоит из слов построчно
сваро
пасито
*
дорат
негор
Отредактировано sanodin (Март 21, 2013 22:32:01)
Офлайн
Если процесс открытия одного файла и чтение из него - то вариант.
Пугадет только:
sanodin:)
негор
Офлайн
4kptчестно,от балды набирал
Пугадет только:негор
Офлайн
делаю так
def update_lab_digit(lab_digit, pos): lab_digit["text"] = "{0}%".format(20*pos) def start_work(event=None): print (t1) btn["relief"] = "raised" fr_in = tkinter.Frame(tk) 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") tk.update() #time.sleep(0.1) update_lab_digit(lab_digit,t1)
Офлайн
Ну вроде так все работает
def start_work(event=None): print (t1) btn["relief"] = "raised" fr_in = tkinter.Frame(tk) 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 range(1,6): tk.update() #time.sleep(0.1) update_lab_digit(lab_digit,t1)
Офлайн