Я пытаюсь понять, как сделать Qthread, и у меня есть этот скелетный код. моя главная цель - не позволить графическому интерфейсу «зависать», в то время как бэкэнд выполняет некоторые работы с базой данных и одновременно обновляет виджет таблицы в графическом интерфейсе. background: Выполнение этого в ОС Windows. Pyside как графический интерфейс. (Я также пытался Python многопоточность, но каждый раз, когда мои приложения аварии)Помощь для понимания Qthread и сигналов. (Pyside)
class GenericThread(QtCore.QThread):
def __init__(self, function, *args, **kwargs):
QtCore.QThread.__init__(self)
self.function = function
self.args = args
self.kwargs = kwargs
def __del__(self):
self.wait()
def run(self):
self.function(*self.args,**self.kwargs)
return
clas myMainGUI(...)
def add(self):
...
for myfiles in os.listdir(..): <--- intensive process, lots of files
column headers = [ .... ]
result = select_data_from_file(myfiles) <----- database file processing
self.insert_table_widget (column headers, result) <--want to insert to widge in "realtime" and do other stuff without GUI getting "hang"
....
self.mythread.emit() <-- ??
def coolie(self): # some button will call this function.
if buttonclick == "add":
self.mythread = GenericThread(self.add)
self.mythread.disconnect() <------??
self.mythread.connect() <------ ??
self.mythread.start()
любая идея, как следует мой Испустите(), подключение() или отключить() быть? спасибо
Do * not * реализовать '__del__', если вы точно не знаете, что делаете. В этом случае я считаю, что ваша реализация '__del__' может вызвать утечку памяти (если не другие проблемы). – Bakuriu