2013-07-10 7 views
7

मैं मुख्य रूप से पाइथन थ्रेड से जीयूआई थ्रेड को अपडेट करने का कोई तरीका ढूंढने का प्रयास कर रहा हूं। Sourceforge पर PyQt5 docs पर यह करने के लिए अच्छे निर्देश हैं। लेकिन मैं अभी भी काम करने के लिए चीजें नहीं मिल सकता है।पीईक्यूटी 5 सिग्नल और स्लॉट्स 'क्यूओब्जेक्ट में कोई विशेषता नहीं है' त्रुटि

क्या एक इंटरैक्टिव सत्र से निम्नलिखित आउटपुट को समझाने का कोई अच्छा तरीका है? इन वस्तुओं पर उत्सर्जन विधि को कॉल करने का कोई तरीका नहीं होना चाहिए?

>>> from PyQt5.QtCore import QObject, pyqtSignal 
>>> obj = QObject() 
>>> sig = pyqtSignal() 
>>> obj.emit(sig) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'QObject' object has no attribute 'emit' 

और

>>> obj.sig.emit() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'QObject' object has no attribute 'sig' 

और

>>> obj.sig = pyqtSignal() 
>>> obj.sig.emit() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'PyQt5.QtCore.pyqtSignal' object has no attribute 'emit' 
+1

ही यहाँ के रूप में: [PyQt5 क्या मॉड्यूल में उत्सर्जन विधि पाया जाता है?] (Http://stackoverflow.com/questions/17581506/pyqt5-in-what-module-is-the-emit-method -फाउंड) - केवल __उंड__ सिग्नल में 'emit' विधि है। ('obj.sig = pyqtSignal()' अभी भी एक अनबाउंड सिग्नल है) – mata

+0

@mata: हाँ, मैं इन उदाहरणों को Sourceforge पर PyQt5 दस्तावेज़ों से ले रहा था। जैसा कि आपने [इंगित किया] [http://stackoverflow.com/questions/17581506/pyfqt5-in-what- मॉड्यूल-is-the-emit-method-found), उत्सर्जन विधि बाध्य सिग्नल के लिए है, यानी यह है QObject से विरासत में प्राप्त एक वर्ग का एक सदस्य। मुझे एहसास नहीं हुआ कि मैं उपरोक्त चिपकने वाले इंटरैक्टिव सत्र में ऐसा नहीं कर रहा था। – ADB

+0

@ माता: बस जिज्ञासा, ** obj.sig = pyqtSignal() ** की उपयोगिता क्या होगी, जैसा उपरोक्त तीसरे उदाहरण में है? – ADB

उत्तर

15

के बाद शब्द और कोड PyQt5 docs में हैं।

नए संकेतों केवल उप-वर्गों में परिभाषित किया जाना चाहिए QObject.They की वर्ग परिभाषा के हिस्सा है और होना चाहिए नहीं हो सकता गतिशील वर्ग विशेषताओं के रूप में के बाद वर्ग परिभाषित किया गया है जोड़ा।

from PyQt5.QtCore import QObject, pyqtSignal 

class Foo(QObject): 

    # Define a new signal called 'trigger' that has no arguments. 
    trigger = pyqtSignal() 

    def connect_and_emit_trigger(self): 
     # Connect the trigger signal to a slot. 
     self.trigger.connect(self.handle_trigger) 

     # Emit the signal. 
     self.trigger.emit() 

    def handle_trigger(self): 
     # Show that the slot has been called. 

     print "trigger signal received" 
+0

वाह, एक साल बाद से अधिक! जवाब स्वीकार किया गया (भले ही उपरोक्त टिप्पणियों में प्रश्न साफ़ किया गया हो)। – ADB

संबंधित मुद्दे