我有問題:我打電話給thread.join(),我敢肯定線程正常工作的標準輸出記錄,但它無法更新GUI。Thread.join()不允許線程本身更新GUI
的例子是非常簡單的:線程應該更新進度5倍:進度條開始全面清空,在時間0,併成爲完全充滿,在時間5 每次更新時每秒,所以它總共需要5秒鐘。
thread.join()後會顯示另一個窗口。
但問題是,在thread.join()我可以看到只是標準輸出記錄,但進度條沒有更新。我必須等5秒鐘,然後我可以看到一個完全填滿的進度條,最後顯示另一個窗口。
,所以我不能看到任何更新我的GUI,我的進度,這些5秒
這期間是代碼:
def Interrupt_Button_clicked(widget, args=()):
t = threading.Thread(target=pulsing2, args=())
t.setDaemon(True)
t.start()
t.join()
builder.get_object('Azioni_Window').show()
def pulsing2():
progressbar.set_inverted(True)
fraction = 0.0
while True:
fraction += 0.2
progressbar.set_fraction(fraction)
print fraction # THIS WORKS CORRECTLY EVERY TIME, 5 TIMES IN TOTAL (1/0.2)
time.sleep(1)
if fraction == 1:
break
progressbar = builder.get_object('Progressbar1')
builder.get_object('Ferma_trovarete_Button').connect('clicked', Interrompi_Button_clicked)
builder.get_object('Trovarete_Window').show()
Gtk.main()
你不應該添加0.2五倍期望它等於1.0,因爲0.2不能完全用二進制表示。如果它在這裏工作,這是巧合。 – kindall 2014-09-01 01:06:44
**打印分數**在時間5打印1.0,** Gtk.Progressbar.get_fraction()**返回我1.0 – FrancescoN 2014-09-01 01:18:25
正如我所說,*如果它在這裏工作,這是巧合。*因此,它的工作原理。這是巧合。 – kindall 2014-09-01 01:25:39