2016-07-14 20 views
0

Ich habe dieses Stück Code in PyQt4:PyQt - Erstellen Signale zur Laufzeit

def _settings_value_changed(self, key, value): 
    signal_name = "%s(PyQt_PyObject)" % key.replace("/", "_") 
    self.emit(SIGNAL(signal_name), value) 

Ich versuche, diesen Teil des Codes zu PyQt5 zu migrieren. Wir wissen, dass PyQt5-Signale als Klassenattribute definiert werden müssen, meine Frage ist: Gibt es eine Möglichkeit, diese Signale dynamisch zu erzeugen?

+1

Soweit ich weiß, gibt es nicht. Was ist dein Anwendungsfall? –

Antwort

0

Nein, Sie können Signale nicht dynamisch definieren. Aber der Code, den du gepostet hast, scheint in keiner Weise von der Verwendung von Signalen zu profitieren, also sieht das wie eine gute Gelegenheit für dich aus, es vollständig zu entfernen.

Rufen Sie stattdessen nur die direkt Slots, mit getattr:

def _settings_value_changed(self, key, value): 
    getattr(self, key.replace("/", "_"))(value)