Seite 2 von 2

Re: Signale und emit

Verfasst: Montag 11. Januar 2021, 20:03
von Omm
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_()

Re: Signale und emit

Verfasst: Montag 11. Januar 2021, 20:26
von __deets__
Das liegt an etwas anderem. Dein Objekt ini_xyz wird kurz nach Entstehung garbage collected. Und damit verschwinden auch seine Verbindungen.

Re: Signale und emit

Verfasst: Montag 11. Januar 2021, 20:39
von Omm
keine Ahnung wie ich das verhindern kann.
Na ja, dann eben ohne Signale.

Re: Signale und emit

Verfasst: Montag 11. Januar 2021, 21:36
von __deets__
Das kann man ja durchaus erlesen, was da so passiert. Und es dann verhindern. https://stackify.com/python-garbage-collection/