我現(xiàn)在使用Pyqt中Phonon寫一個簡單的音樂播放程。 我想在播放的同時打印音樂當前的時間。def check_if_delay(self): while True: print(self.m_media.currentTime(),end=' ')
time.sleep(2)def play(self, index):
self.delayedInit()
self.m_media.setCurrentSource(Phonon.MediaSource(index))
self.check_thread = threading.Thread(target=self.check_if_delay)
self.check_thread.setDaemon(True)
self.check_thread.start()
self.m_media.play()當我player.play(index)時,音樂能播放,但是卻沒有打印。 當我強制中斷音樂播放時,需要打印的時間卻有都出來了。
2 回答

一只萌萌小番薯
TA貢獻1795條經(jīng)驗 獲得超7個贊
這并不是block的問題,而是你需要flush stdout。 修改方法是在你的代碼的check_if_play
中,print
語句之后,time.sleep
語句之前,加入一句
sys.stdout.flush()
即可。

明月笑刀無情
TA貢獻1828條經(jīng)驗 獲得超4個贊
你有兩個方案,第一,不用多線程,因為顯示線程一定在主線程里,子線程獲取數(shù)據(jù)了也沒辦法直接往顯示線程里寫,你可以設(shè)置一個1s的timer,在timeout的槽里做顯示 第二,如果你使用多線程的話,請用信號和槽來進行數(shù)據(jù)同步,將子線程里的數(shù)值發(fā)個信號出來傳遞到主線程的槽里完成更新
添加回答
舉報
0/150
提交
取消