Also mein Ziel ist es:
- Caller.py - öffnet searchingWheel GUI und der caller.py macht dann seine restliche Arbeit die unter umständen mehrere minuten oder stunden dauert.
- Wenn Bei der GUI auf abbrechen gedrückt wird soll vorzeigt alles abgebrochen werden
- Wenn die Hauptarbeit beendet ist soll die GUI vom caller.py aus geschlossen werden.
Ist gerade erst im Aufbau deshalb hab ich das mal auf das wesentliche runtergebrochen.
Nun das Problem wenn ich auf Abbrechen drücke wenn ich die GUI aus caller.py öffne (wenn ich sie direkt öffne ist alles gut) bekomme ich diese Meldung "QObject::~QObject: Timers cannot be stopped from another thread" und ich weißt nicht wie ich das lösen soll oder was ich falsch mache.
Ich hoffe auf eure Hilfe
VG Bachatero18
searching_wheel.py
Code: Alles auswählen
import sys
from PySide2 import QtWidgets
from ui_searching_wheel import Ui_MainWindow
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, label_text, speed):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.cancelButton.clicked.connect(self.cancel_button_clicked)
def cancel_button_clicked(self):
self.timer.stop()
self.close() # Schließe das Fenster nach dem Ausführen der Aktionen
def main(label_text: str = "", speed: int = 5):
app = QtWidgets.QApplication(sys.argv)
window = MainWindow(label_text, speed)
window.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
caller.py
Code: Alles auswählen
import threading
import searching_wheel
import time
def one():
searching_wheel.main("Beispiel", 35)
def two():
for i in range(5):
i += 1
print("action")
time.sleep(1)
gui_thread = threading.Thread(target=one)
gui_thread.start()
two()
gui_thread.join()
print('Alle Aufgaben wurden abgeschlossen.')