2009-09-09 26 views
12
>>> 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' 

Vâng, tôi đã đọc QString Class ReferenceCách tạo QString trong PyQt4?

Tại sao tôi không thể nhập QString từ QtCore, như quy định trong tài liệu?

+0

nhập gì bạn đang sử dụng để đọc QtCore – Mark

+0

import sys từ PyQt4 nhập khẩu QtGui, QtCore –

Trả lời

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

Lưu ý sự khác nhau nhập khẩu - Tôi ngạc nhiên là nhập khẩu của bạn đã không đưa ra một cú pháp hợp lệ lỗi – Mark

+2

từ PyQt4 nhập khẩu QtCore s = QtCore .QString ('foo') AttributeError: đối tượng 'module' không có thuộc tính 'QString' Tôi gặp vấn đề này trong Py3.1. Nhưng trong Py2.5 nó hoạt động, lạ ... –

+0

Có lẽ PyQt4 chưa được cài đặt đúng cho Python 3.1 của bạn. Hoặc nó không hỗ trợ nó. – wRAR

1

Tùy thuộc vào tuyên bố nhập của bạn.

Nếu bạn viết

from PyQt4 import QtGui, QtCore 

bạn phải gọi QString với

yourstr = QtCore.QString('foo') 

Tôi nghĩ rằng bạn đã viết này:

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

Nó không thực sự khuyến khích, nhưng bạn nên gọi Chuỗi có:

yourstr = QString('foo') 
15

Trong Python 3, QString được tự động ánh xạ tới các chuỗi Python bản địa theo mặc định:

The QString class is implemented as a mapped type that is automatically converted to and from a Python string. In addition a None is converted to a null QString. However, a null QString is converted to an empty Python string (and not None). (This is because Qt often returns a null QString when it should probably return an empty QString.)

The QChar and QStringRef classes are implemented as mapped types that are automatically converted to and from Python strings.

The QStringList class is implemented as a mapped type that is automatically converted to and from Python lists of strings.

The QLatin1Char, QLatin1String and QStringMatcher classes are not implemented.

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

+0

Liên kết 404s: (.Tôi mong đợi điều tương tự cũng áp dụng trong PyQt5? – Dennis

12

Từ PyQt4 4.6+ trong Python3 QString không tồn tại và bạn có nghĩa vụ phải sử dụng bình thường Các đối tượng unicode Python3 (chuỗi ký tự). Để làm điều này để mã của bạn sẽ làm việc trong cả hai Python 2.x VÀ Python 3.x bạn có thể làm như sau:

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

Tùy thuộc vào trường hợp sử dụng của bạn, bạn có thể nhận được ngay với Hack đơn giản này.

Các vấn đề liên quan