簡體   English   中英

Pyside:我怎么知道哪個線程發出了“完成”信號?

[英]Pyside: How can i know which thread emitted the signal “finished”?

我開始一些線程,但想知道哪個線程完成了:

...
...
def start_ten_threads(self):
    self.workers = []

    for i in range(0, 10):
        self.workers.append(thread_worker(i, self))

        ...    
        ...

    for k in range(0, 10):
        self.workers[k].finished.connect(lambda: self.print_finished("WorkerThread %d finished" % k))
        self.workers[k].start()

@Slot(str)
def print_finished(self, str):
    print(str)

對於每個線程,我得到相同的數字9(k的最后一個值)。 為什么? 我可以通過信號“完成”以這種方式使用參數嗎? 我已經閱讀了一些有關QSignalMapper的內容。 這里還有別的辦法嗎?

如果我使用self.sender(),我會指向該線程,但是我不知道它是哪個線程號。

對於lambda,請嘗試:

lambda k=k: self.print_finished("WorkerThread %d finished" % k)
       ^^^

使用這種語法,lambda將捕獲並使用創建lambda時的k值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM