Signale und emit

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Omm
User
Beiträge: 90
Registriert: Samstag 7. April 2018, 14:05

8h später 1 Erfahrung reicher.
Ein Punkt habe ich leider noch.
Das senden eines Signal geht nur über den Pushbutton oder auch über einen Timer.
Wenn ich aber 'jobmessage' zur Laufzeit ausführe, kommt nichts an. Ich denke das hängt mit einen Event zusammen.
Kann dies sein?

Code: Alles auswählen

import sys
from PyQt5.QtCore import pyqtSignal, QObject
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton


class xyz(QObject):
    message = pyqtSignal(str)

    def __init__(self, parent= None):
        super(xyz, self).__init__(parent)

    def jobmessage(self):
        self.message.emit('meldung')


class MainWindow(QMainWindow):
    def __init__(self, parent= None):
        super(MainWindow, self).__init__(parent)
        ini_xyz = xyz(self)
        ini_xyz.message.connect(self.meldung)

        self.btn = QPushButton("sender", self)
        self.btn.clicked.connect(ini_xyz.jobmessage)

    def meldung (self, meldung):
        print(meldung)



app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das liegt an etwas anderem. Dein Objekt ini_xyz wird kurz nach Entstehung garbage collected. Und damit verschwinden auch seine Verbindungen.
Omm
User
Beiträge: 90
Registriert: Samstag 7. April 2018, 14:05

keine Ahnung wie ich das verhindern kann.
Na ja, dann eben ohne Signale.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das kann man ja durchaus erlesen, was da so passiert. Und es dann verhindern. https://stackify.com/python-garbage-collection/
Antworten