【问题标题】:How to create QString in PyQt4?如何在 PyQt4 中创建 QString?
【发布时间】:2010-11-26 21:59:44
【问题描述】:
>>> from PyQt4 import QtCore
>>> str = QtCore.QString('Hello')
AttributeError: 'module' object has no attribute 'QString'

>>> QtCore.QString._init_(self)
AttributeError: 'module' object has no attribute 'QString' 

是的,我读过QString Class Reference

为什么我不能按照文档中的说明从QtCore 导入QString

【问题讨论】:

  • 你使用什么导入来读取 QtCore
  • import sys from PyQt4 import QtGui, QtCore

标签: python user-interface pyqt


【解决方案1】:

在 Python 3 中,QString 默认自动映射到原生 Python 字符串:

QString 类被实现为一个映射类型,它可以自动与 Python 字符串相互转换。此外,一个 None 被转换为一个 null QString。然而,一个空的 QString 被转换为一个空的 Python 字符串(而不是无)。 (这是因为当 Qt 应该返回一个空的 QString 时,它经常返回一个空的 QString。)

QChar 和 QStringRef 类被实现为映射类型,可自动与 Python 字符串相互转换。

QStringList 类被实现为一个映射类型,它可以自动与 Python 字符串列表相互转换。

QLatin1Char、QLatin1String 和 QStringMatcher 类未实现。

http://pyqt.sourceforge.net/Docs/PyQt4/qstring.html

【讨论】:

  • 链接 404s :(。我希望 PyQt5 也是如此?
【解决方案2】:

从 Python3 中的 PyQt4 4.6+ 开始,QString 不存在,您应该使用普通的 Python3 unicode 对象(字符串文字)。为此,您的代码可以在 Python 2.x 和 Python 3.x 中运行,您可以执行以下操作:

try:
    from PyQt4.QtCore import QString
except ImportError:
    # we are using Python3 so QString is not defined
    QString = type("")

根据您的用例,您可能会摆脱这个简单的黑客攻击。

【讨论】:

    【解决方案3】:
    In [1]: from PyQt4 import QtCore
    In [2]: s = QtCore.QString('foo')
    In [3]: s
    Out[3]: PyQt4.QtCore.QString(u'foo')
    

    【讨论】:

    • 注意不同的导入 - 我很惊讶您的导入没有给出无效的语法错误
    • from PyQt4 import QtCore s = QtCore.QString('foo') AttributeError: 'module' object has no attribute 'QString' 我在 Py3.1 中有这个问题。但是在 Py2.5 中它可以工作,很奇怪......
    • 也许 PyQt4 没有为您的 Python 3.1 正确安装。或者它不支持它。
    • 我相信 PyQt 还没有被移植到 Py3.1 并且 Py3.1 不向后兼容所以预计它不会在大多数库中工作。
    【解决方案4】:

    这取决于您的导入语句。

    如果你写

    from PyQt4 import QtGui, QtCore
    

    你必须调用 QString

    yourstr = QtCore.QString('foo')
    

    我想你已经写了这个:

    from PyQt4.QtGui import *
    from PyQt4.QtCore import *
    

    不是很推荐,但你应该用 :

    调用 String
    yourstr = QString('foo')
    

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2016-10-29
      相关资源
      最近更新 更多