سؤال

>>> 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

لماذا لا يمكنني الاستيراد QString من QtCore, ، كما هو محدد في المستندات؟

هل كانت مفيدة؟

المحلول

In [1]: from PyQt4 import QtCore
In [2]: s = QtCore.QString('foo')
In [3]: s
Out[3]: PyQt4.QtCore.QString(u'foo')

نصائح أخرى

في Python 3 ، يتم تعيين QString تلقائيًا إلى سلسلة Python الأصلية افتراضيًا:

يتم تنفيذ فئة QString كنوع معين يتم تحويله تلقائيًا من وإلى سلسلة Python. بالإضافة إلى ذلك ، يتم تحويل لا شيء إلى QString فارغة. ومع ذلك ، يتم تحويل QString فارغ إلى سلسلة بيثون فارغة (وليس لا شيء). (وذلك لأن QT غالبًا ما يعيد QString فارغًا عندما يكون من المحتمل أن يعيد QString فارغ.)

يتم تنفيذ فئات QCHAR و QSTRINGREF كأنواع معينة يتم تحويلها تلقائيًا من وإلى سلاسل بيثون.

يتم تنفيذ فئة QStringList كنوع معين يتم تحويله تلقائيًا من وإلى قوائم الأوتار.

لم يتم تنفيذ فئات Qlatin1char و Qlatin1string و QStringMatcher.

http://pyqt.sourceforge.net/docs/pyqt4/qstring.html

من PYQT4 4.6+ في Python3 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("")

اعتمادًا على حالة الاستخدام الخاصة بك ، قد تفلت من هذا الاختراق البسيط.

ذلك يعتمد على بيان الاستيراد الخاص بك.

إذا كتبت

from PyQt4 import QtGui, QtCore

يجب عليك الاتصال بـ QString

yourstr = QtCore.QString('foo')

أعتقد أنك كتبت هذا:

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

لا ينصح به حقًا ، لكن يجب عليك الاتصال بـ:

yourstr = QString('foo')
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top