2013-07-10 21 views
0

這將有助於有人運行此代碼作爲我的健康檢查。PyQt5在哪個模塊中發現了發射方法?

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) 
... 
>>> 

是真的返回給其他人嗎?請注意,從PyQt4的一個QObject進口:

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

回答

2

pyqtSignal是不是一個信號,它是一個用於創建信號的工廠函數,所以當然不會有emit屬性。它只返回一個descriptor,它綁定到一個QObject實例時將返回實際的信號對象。這意味着只有綁定信號將有一個emit方法。

QObject.emit方法是從pyqt中引入新樣式信號之前的時代開始的,現在是has been removed。只需用綁定信號上的emit方法發射它即可:

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

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

謝謝,我現在可以清楚地看到雨已經消失了! ;) – ADB