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))
должен сделать свое дело.