2013-07-10 2 views
0

Il serait utile que quelqu'un exécute ce code pour moi comme un contrôle de santé mentale.PyQt5 dans quel module la méthode d'émission est-elle trouvée?

Python 3.3.1 (default, Apr 17 2013, 22:30:32) 
[GCC 4.7.3] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>>from PyQt5.QtCore import pyqtSignal 
>>>for i in dir(pyqtSignal): 
... if i == 'emit': 
...   print(True) 
... 
>>> 

Est-il vrai pour quelqu'un d'autre? Notez qu'avec une importation QObject de PyQt4:

>>> from PyQt4.QtCore import QObject 
>>> for i in dir(QObject): 
...  if i == 'emit': 
...    print(True) 
... 
True 

Répondre

2

pyqtSignal n'est pas un signal, il est fonction de l'usine pour créer des signaux, donc bien sûr, il ne possède pas d'attribut emit. Il renvoie simplement un descriptor, qui, lorsqu'il est lié à une instance QObject, renvoie l'objet signal réel. Cela signifie que seul un signal relié aura une méthode emit.

La méthode QObject.emit est une relique de temps avant que les nouveaux signaux de style aient été introduits dans pyqt, et maintenant has been removed. Il suffit d'utiliser la méthode emit sur le signal lié à l'émettre:

class SomeObject(QObject): 
    someSignal = pyqtSignal(...) 

instance = SomeObject() 
instance.someSignal.emit(value) 
+1

Merci, je peux voir clairement maintenant la pluie est parti! ;) – ADB

Questions connexes