Hin*_*123 3 qstring pyqt pyqt4 qgis attributeerror
我试图在QGIS Python控制台中使用QString.
from PyQt4.QtCore import QString
Run Code Online (Sandbox Code Playgroud)
但它说:
ImportError: cannot import name QString
Run Code Online (Sandbox Code Playgroud)
在我的Python IDLE中它工作正常,但我知道QGIS带来了自己的PyQt4.这可能是什么问题?我能解决吗?
import PyQt4.QtCore
PyQt4.QtCore.QString()
Run Code Online (Sandbox Code Playgroud)
和
from PyQt4 import QtCore
QtCore.QString()
Run Code Online (Sandbox Code Playgroud)
无论如何都不行.
我正在考虑将QtCore4.dll从我自己的PyQt4安装复制到QGIS,但QGIS使用QtCore.prl和QtCore4.lib而不是QtCore.pyd和QtCore4.dll,就像我的PyQt4安装一样
当我在QGIS控制台中调用帮助(PyQt4.QtCore)时,它没有说明QString类,而Python IDLE中的操作也是如此......这真的令人沮丧......
如果有人知道该做什么会很棒:)
如果Python2与PyQt4一起使用,那么默认情况下类QString和的类QVariant将可用.但是,Python3的默认设置是消除这些类并使用等效的python类型.
可以使用sip模块覆盖这些默认值,如下所示:
import sip
# switch on QString in Python3
sip.setapi('QString', 1)
# switch off QString in Python2
sip.setapi('QString', 2)
from PyQt4 import QtCore
Run Code Online (Sandbox Code Playgroud)
如果QString在QGIS中不可用,那要么是因为它使用的是Python3,要么是因为它正在使用Python2和上面建议的切换API.
无论哪种方式,可能是您的问题最简单的解决将是空转的Python3版本,让你不再有打扰QString和QVariant.
请注意,在PyQt5中,没有切换API的选项,因此QString在那里永远不可用.
并且还注意到Qt4的官方支持在今年结束.因此,如果你想要面向未来的新PyQt应用程序,你的首选应该是PyQt5 + Python3,除非你有充分的理由不这样做(例如不可避免的依赖).
| 归档时间: |
|
| 查看次数: |
5085 次 |
| 最近记录: |