QComboBox.currentText() - PySide против PyQt4

У меня есть скрипт на Python, использующий PySide, и он отлично работает. Но потом я решил проверить, будет ли он работать с PyQt4. И после изменения строк импорта на PyQt4 все пошло не так. Ошибка указывает на тему следующим образом:

  File "./my_file.py", line 93, in showit
    curr_query = '.'.join(curr_query)
TypeError: sequence item 0: expected string, QString found

Из документов видно, что метод субъекта PySide возвращает строку 'unicode', а метод PyQt4 возвращает объект QString. Игра с str(), str () и т. Д., Похоже, не сработала. Вот код функции:

def showit(self, idx):
    curr_query = []
    for i in xrange(idx+1):
>>    x = self.combo[i].currentText()
>>    if x:
            curr_query.append(x)
        else:
            break
    curr_query = '.'.join(curr_query)

Это читает текст набора QCombobox'ов для создания представления строки с разделенными точками, которое я использую позже. Отмеченные строки ">>" - вот где возникает проблема - объект "x" никогда не является пустой строкой, внезапно, как это было при использовании библиотеки PySide. Но ожидается, что он будет пустым, если есть пустой self.combo[i] .

Я искал в SO архиве и нашел этот ответ, но не смог его использовать. Пожалуйста, совет, как это исправить.

1 ответ

Решение

Вам нужно конвертировать ваши x значения в строку сортов. Что-то вроде

curr_query.append(str(x))

должен сделать свое дело.

Другие вопросы по тегам