LINUX.ORG.RU

Создать окно Tkinter и закрыть его после выполнения процедуры

 


0

1

Мне нужно вставить progress bar на выполнение определенной процедуры (желательно, без использования дополнительных тредов) или хотя бы отобразить окно «Please wait...» и закрыть его после выполнения процедуры.

root=Tk()
frame=Frame(root)
label=Label(frame,text='Please wait...')
label.pack()
frame.pack()
smart_search(['Принцесса','на','горошине'])
root.mainloop()

from tkinter import ttk

root = Tk()
progressbar = ttk.Progressbar(orient=HORIZONTAL, length=200, mode='determinate')
progressbar.pack(side="bottom")
progressbar.start()
smart_search(['Принцесса','на','горошине'])
progressbar.stop()
root.mainloop()

В обоих случаях окна появляются ПОСЛЕ выполнения процедуры. Как исправить?

Deleted

В таком виде только с тредами же. У тебя же твоя функция smart_search() выполняется до того как приложения в бесконечный цикл отрисовки уходит. // не писал ничего с tkinter, поэтому навскидку сказал.

z00ke ()

root.mainloop запустить надо чтобы tk начало рисоваться. И нужно держать его в отдельном потоке, если хочешь чтобы окно перерисовывалось.

ei-grad ★★★★★ ()

Прекратите насиловать труп.

anonymous ()
Ответ на: комментарий от ei-grad

Я что-то не могу осилить threading + progressbar. Есть ли какие-нибудь простые примеры?

Deleted ()

В обоих случаях окна появляются ПОСЛЕ выполнения процедуры. Как исправить?

на Tcl/Tk вызвать «update idletasks» перед smart_search и время от времени пока идут вычисления - в python tkinter должен быть аналог, ищите и обрящите :-)

MKuznetsov ★★★★★ ()
def smart_search(arg):
    x = 0
    #здесь какой-то цикл
        root.update() # обновление интерфейса
        progressVar.set(x) # выставляется текущее положение прогрессбара
        x += 1

root = Tk()

progressVar = IntVar() # переменная, связанная с текущим заполнением
ttk.Progressbar(root, value = 100, variable = progressVar).pack()

smart_search(arg)

root.mainloop()

попробуй реализовать что-то подобное. но в функции нужен цикл, что бы выставлять новое положение прогрессбара.

der_looser ★★ ()
Последнее исправление: der_looser (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.