2011-10-07 11 views
5

Używam GUI Tkinter do zainicjowania procesu pomiaru i analizy, który w zasadzie działa za pomocą klikniętego przycisku. Ponieważ te pomiary mogą potrwać, próbowałem to pasek postępu, a mianowicie tego:GUI My Tkinter jest zbyt ... statyczne?

http://tkinter.unpythonic.net/wiki/ProgressMeter

Ale kiedy zrobić zainicjować proces, całe okno Tkinter zamienia nonsensu aż pomiar jest zrobione i w pewnym sensie przeładowuje się, a mój pasek postępu jest ustawiony na 100%. To nie jest coś, co chciałem się wydarzyć.

Co się tam stało? Jestem całkiem nowy w tym całym oprogramowaniu, więc nie mam wszystkich narzędzi, jak sądzę. Czy muszę wprowadzić oddzielny wątek lub coś w tym stylu, tak aby pomiar i wątek główny (czy to właśnie to?) Działały jednocześnie? Jeśli tak, jak mam to zrobić?

Odpowiedz

0

wezwanie widget.update()/root_window.update() każdym razem zaktualizować pasek postępu

+1

Aktualizacja jest niebezpieczna dla połączenia (nie tyle niebezpieczne, ale raczej może prowadzić do niezamierzonych skutków ubocznych). Zasadniczo, jeśli nie wiesz, dlaczego jest to uciążliwe, nie powinieneś tego nazywać. Zwykle "update_idletasks" jest lepszym wyborem. –

2

dokonać progressbar

progress = ttk.Progressbar(bottommenuframe, orient=HORIZONTAL, length=100, maximum=190073,  mode='determinate') 
progress.pack(side=RIGHT) 

progress.start() ## this starts the progressbar 

następnie podczas analizy (są to fragmenty z mojego kodu, który przetwarza plik 67MB.):

def analysisfunction(): 
    progress.step(1) 
    ##do some analysis 
    root.after(0, analysisFunction) 

    if job == complete: 
     stop 

Tak jak powiedziałem, to będzie działać z moim plikiem 67 MB i tkinerem. Nadzieję, że trochę pomaga :)

Powiązane problemy