ich habe ein Tool geschrieben welches diverse Berechnungen durchführt, die Ergebnisse lasse ich mittel PyQt5 mit Hauptfenster darstellen. Damit das auch während der Berechnung funktioniert, verwende ich gerade die _thread libary.
Das Hauptfenster welches ich mit dem QTDesigner erstellt habe enthält einen Textbrowser um kontinuierlich einen Status zu geben (bspw."'Berechnung von Blabla noch blabla Files"). Zudem enthält das Fenster ein QWidget welches ich mit der Klasse "PlotWidget" promoted habe um mir pyqt plots darstellen zu lassen (graphWIdget). Und da scheint auch das Problem zu liegen:
Der Aufbau des Codes ist in etwa so, dass ich mittels des ui readers das Dialogfenster öffne und starte und dieser nun wartet bis ich start drücke und dann die Funktion any_function() mit einem neuem Thread startet. Der Funktion wird der QTDialog ("d_mainWindow" ) übergben, damit ich in der Funktion den Status in den TextBrowser sowie den Plot aktualisieren kann.
Code: Alles auswählen
def start_main_window():
raw_data_dir = d_mainWindow.rawDataDir.text()
dir_output = d_mainWindow.dirOutput.text()
_thread.start_new_thread(any_function,(raw_data_dir,dir_output, d_mainWindow))
app = widgets.QApplication(sys.argv)
d_mainWindow = uic.loadUi(r"VA_Binning_GUI.ui")
d_mainWindow.show()
d_mainWindow.graphWidget.setLabel('top','Measurement Data Overview',labelStyle = {'color': 'black', 'font-size': '18pt'})
d_mainWindow.startButton.clicked.connect(start_main_window)
sys.exit(app.exec())
Code: Alles auswählen
QObject::startTimer: Timers cannot be started from another thread
Für jede/n Kritik und Verbesserungsvorschlag bin ich sehr dankbar!
Squipy