Imam nek GUI, ki se izvaja v ločenem procesu. Pri inicializaciji GUIja ustvarim par threadov, ki skrbijo za updatanje raznih stvari.
Na primer:
- Koda: Izberi vse
class myGui(QtWidgets.QMainWindow, gui.Ui_MainWindow):
def __init__(self, guiState, guiData):
super(self.__class__, self).__init__()
self.ui = self.setupUi(self)
...
#vse ostalo
...
thread1 = threading.Thread(target = self.test)
thread1.start()
def update(self, field, txt):
field.verticalScrollBar().value() #to deluje
field.setText(txt) #tukaj se ustavi
def test(self):
while True:
time.sleep(1)
self.calc(self.txt_field, "nekaj"
guiState in guiData prideta "od zunaj" in ju uporabljam za komunikacijo med procesi. To sicer tukaj niti ni pomembno.
"self.txt_field" se nahaja v ločeni datoteki, narejeni s Qt Designerjem (oz. prevedeno s pyqt5):
- Koda: Izberi vse
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
...
self.tab1= QtWidgets.QWidget()
self.txt_field= QtWidgets.QTextBrowser(self.tab1)
...
Dokler nisem imel "update" v ločenem threadu je stvar delovala. Sedaj pa ne deluje, kar mi je jasno, ker gre za ločen thread.
Napaka, ki jo dobim je: QObject: Cannot create children for a parent that is in a different thread.
Vprašanje je, kaj moram popraviti?