Tôi đã cố gắng tìm cách cập nhật chuỗi GUI từ một chuỗi Python bên ngoài chính. PyQt5 docs trên sourceforge có hướng dẫn tốt về cách thực hiện điều này. Nhưng tôi vẫn không thể làm mọi thứ.Tín hiệu PyQt5 và lỗi 'QObject' không có thuộc tính '
Có cách nào tốt để giải thích kết quả sau đây từ một phiên tương tác không? Không nên có một cách để gọi phương pháp phát ra trên các đối tượng này?
>>> 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'
và
>>> obj.sig.emit()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'QObject' object has no attribute 'sig'
và
>>> 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'
giống như ở đây: [PyQt5 trong những mô-đun được phương pháp Emit tìm thấy?] (Http://stackoverflow.com/questions/17581506/pyqt5-in-what-module-is-the-emit-method -found) - chỉ các tín hiệu __bound__ có phương thức 'emit'. ('obj.sig = pyqtSignal()' vẫn là một tín hiệu không liên kết) – mata
@mata: Vâng, tôi đã lấy những ví dụ này từ các tài liệu PyQt5 tại sourceforge. Như bạn đã chỉ ra (http://stackoverflow.com/questions/17581506/pyfqt5-in-what-module-is-the-emit-method-found), phương pháp phát ra là cho một tín hiệu bị ràng buộc, tức là nó là một thành viên của một lớp kế thừa từ QObject. Tôi đã không nhận ra rằng tôi đã không làm điều đó trong phiên tương tác dán ở trên. – ADB
@ mata: Chỉ cần tò mò, những gì sẽ là tiện ích của ** obj.sig = pyqtSignal() **, như trong ví dụ thứ ba ở trên? – ADB