2016-04-18 2 views
0

Я хочу, чтобы элементы в combobox можно было проверить. Я нашел способ сделать это here.Как переносить MultiCheckComboBox в PySide?

В этом конкретном примере используется PyQt, и поскольку я использую PySide, для его работы требуются некоторые изменения.

Первая ошибка, которую я получаю, составляет около QStringList, которую я заменил [].

Затем я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "MultiCheckComboBox.py", line 401, in data 
    if not value.isValid(): 
AttributeError: 'NoneType' object has no attribute 'isValid' 

Я не уверен, что нужно изменить, чтобы исправить вышеуказанную ошибку.

+0

Саммерфилд, который буквально написал книгу на PyQt, имеет заметки о переносе вещей на PySide здесь: http://www.qtrac.eu/pyqtbook.html. Кроме того, некоторые дополнительные заметки можно найти здесь, поместив книгу Саммерфилда из PyQt в PySide, которая может иметь некоторые полезные вещи в целом: https://github.com/EricThomson/PySideSummer. – neuronet

ответ

0

PyQt4 (по умолчанию) возвращает некоторые значения в качестве экземпляров QVariant (хотя его можно настроить для возврата собственного типа Python). Однако PySide всегда преобразуется в родные типы Python.

Ваш код предполагает, что PyQt4 будет использовать QVariant. Эта строка кода предполагает, что value является QVariant. Вам нужно будет изменить его на:

if value is not None: 

в этом случае, однако маловероятно, что это единственный экземпляр QVariant в этом коде и изменение вам нужно сделать для тех, кто будет зависеть от функции QVariant что код пытается вызвать.

Смежные вопросы