PyQt - как заменить QString на sip API 2 - PullRequest
1 голос
/ 02 февраля 2012

Пожалуйста, покажите мне, как заменить этот код:

import sip
sip.setapi("QString", 2)
...

text = QString.fromLatin1("<p>Character: <span style=\"font-size: 16pt; font-family: %1\">").arg(self.displayFont.family()) + \
            QChar(key) + \
            QString.fromLatin1("</span><p>Value: 0x") + \
            QString.number(key, 16)

и

if QChar(self.lastKey).category() != QChar.NoCategory:
    self.characterSelected.emit(QString(QChar(self.lastKey)))

с sip API 2 Python-эквивалентом. Там написано «NameError: глобальное имя« QString »не определено», потому что вместо этого я использую строки Python Спасибо.

[решаемые]

text = ('<p>Character: <span style="font-size: 16pt; font-family: %s">%s</span>
    <p>Value: %#x' % (self.displayFont.family(), unichr(key), key))

и

if unicodedata.category(unichr(self.lastKey)) != 'Cn':
    self.characterSelected.emit(unichr(self.lastKey))

1 Ответ

2 голосов
/ 03 февраля 2012

Переключение на API v2 для QString удаляет связанные со строками классы Qt, так что вместо них везде можно использовать строки python.

Таким образом, «эквивалент Python API 2 для sip» - это обычная обработка строк Python:

>>> text = ('<p>Character: <span style="font-size: 16pt; '
...         'font-family: %s">%s</span><p>Value: %#x' %
...         (font.family(), unichr(key), key))
>>> 
>>> print text
<p>Character: <span style="font-size: 16pt; font-family: Sans Serif">A</span><p>Value: 0x41
...