Я действительно пытаюсь закончить писать графическое приложение, которое требует нескольких разных потоков. На высоком уровне мне требуется:Как передать переменную QThread (PySide или PyQT)
Речь GUI, в которой есть кнопка для открытия браузера каталога, который пользователь выбирает для каталога. При выборе каталога начинается поток, который ищет определенный тип файла. Это может занять много времени, поэтому я знаю, что мне нужно добавить отдельный QThread.
После того, как поток BrowseFile завершил поиск файлов, он возвращает файлList, который затем перебирается в файлы subListList. Каждый файл subfileList затем отправляется в отдельный поток для обработки, который займет много времени.
Это то, что я закодирован до сих пор:
from PyQt4 import QtCore
from PyQt4 import QtGui
from PyQt4.QtCore import *
import os
class BrowseThread(QThread):
processdone = QtCore.pyqtSignal("QString") # Define custom signal.
def __init__(self, parent, *args, **kw):
QThread.__init__(self, parent)
self.search(*args, **kw)
def search(self, directory_path):
self.fileList = []
self.count = 0
for dirname, dirnames, filenames in os.walk(directory_path):
for filename in filenames:
if filename.endswith(".gz"):
self.fileList.append(os.path.join(directory_path,filename))
self.emit(SIGNAL('processdone'), "DONE")
return
class MyClass(QObject):
def __init__(self):
super(MyClass, self).__init__()
directory_path = r'C:\Data'
thread1 = BrowseThread(self, directory_path)
self.connect(thread1, SIGNAL("processdone"), self.thread1done)
thread1.start()
def thread1done(self, text):
print(text)
sys.exit()
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
a = MyClass()
sys.exit(app.exec_())
Есть ли лучший способ пройти путь к каталогу в browseThread, чем при использовании * арга, ** кВт?
Как вернуть файл списка обратно в основной поток, который затем я могу передать нескольким новым потокам обработки.
Я уверен, что делая это тяжелее, чем это должно быть так, надеюсь, кто-то может помочь мне
благодаря