通过阅读本文,出现了两个问题:
它说
有时需要将Python方法明确标记为Qt槽
虽然我总是使用@pyqtSlot装饰器,因为它说:
将信号连接到装饰的Python方法还具有减少内存使用量的优势,并且速度稍快
我问自己:哪些具体案例是必要的?并且:不使用@pyqtSlot装饰器有什么好处吗?
2.结果关键字参数,它的目的是什么?
@pyqtSlot(int, result=int)
def foo(self, arg1):
""" C++: int foo(int) """
Run Code Online (Sandbox Code Playgroud)
它看起来像返回值的类型,但AFAIK在发出信号时无法检索返回值.
关于那个的任何想法?
我刚刚在 OpenSUSE 飞跃上使用 python 3.6.3 在 pyenv virtualenv 中构建了 PyQt5,构建进行得很顺利,但是当我导入时
>>> from PyQt5 import QtCore
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: PyCapsule_GetPointer called with incorrect name
Run Code Online (Sandbox Code Playgroud)
我可以导入PyQt5,但是我不能使用它下面的模块
>>> import PyQt5
>>> PyQt5.QtCore
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'PyQt5' has no attribute 'QtCore'
Run Code Online (Sandbox Code Playgroud)
我在这里读到原因可能是系统上的另一个 sip,例如 PyQt4 安装,我尝试从包管理器中卸载 PyQt4,但没有帮助。
我不知道该怎么办,有什么想法吗?
如果我安装 python3-qt5 包并使用系统 python 它工作
编辑:
我在 OpenSUSE Leap 15 上的另一台机器上使用 PyQt4 遇到了同样的问题,解决方案是配置 sip:
python configure.py …Run Code Online (Sandbox Code Playgroud)