Найти - Пользователи
Полная версия: Кодировка строк в QListWidget
Начало » GUI » Кодировка строк в QListWidget
1
Landing
Как вывести текст строки в читаемом виде?
Сейчас выводится:
C:\Documents and Settings\?????\??????? ????\test ??????\????? 1\?????? ???????? ???????? ??.xls

 
@QtCore.pyqtSignature("QListWidgetItem*")
def on_list1_itemDoubleClicked(self, item):
print self.list1.item(self.list1.row(item)).text().toAscii().data()
The gray Cardinal
А причём здесь GUI?
ActivePython: решение проблем с кодировками
Landing
Все это понятно, но проблема в гуи. Как объяснить присвоение лабелу значения переменной и лабел отображает ее корректно, но стоит написать print переменная, как появляются ??? ??? ?? или ‘ascii’ codec can't encode characters in position 26-30: ordinal not in range(128)
Все перечисленное в ссылке пробовал в разных вариациях. Если бы получилось, сюда бы не писал.
The gray Cardinal
Landing
лабел отображает ее корректно, но стоит написать print переменная…
Вот это и говорит о том, что проблема отнюдь не в GUI ;).
Ты бы написал минимальный пример, пригодный для запуска и отладки (только минимальный, портянки постить не надо). А то даже не ясно, в какой кодировке у тебя исходник.
Landing
Спасибо, почти разобрался. Путем комбинаций unicode(), decode() удалось правильно отображать строку. Исходник в UTF-8. Но такая засада, в коде:

 def on_bt_path_clicked(self):
directory = QtGui.QFileDialog.getExistingDirectory(self,
self.tr("Select folder"),
self.label_8.text(),
QtGui.QFileDialog.DontResolveSymlinks | QtGui.QFileDialog.ShowDirsOnly)
if not directory.isEmpty():
self.folders = unicode(directory.replace("/","\\")).encode('cp1251')
self.label_8.setText(directory)
Как в этом месте заставить показывать рус буквы?
self.tr("Select folder"),
The gray Cardinal
Landing
Как в этом месте заставить показывать рус буквы?
Что значит “русские буквы”? Тебе перевод нужен?
Python: интернационализация приложений pyQT4
Landing
Русские буквы, имеется ввиду их отображение не кракозябрами.
The gray Cardinal
Нет примера, пригодного для запуска и отладки, поэтому непонятно, с чем боремся.
Landing
Как нет примера? А это:
QtGui.QFileDialog.getExistingDirectory
Стандартный кутишный вызов диалога для выбора папки. И непонятно каким образом заставить отобразить в “заголовке” не кракозябры.
Если делаю лабелу:
self.label1.setText("Всего обработано:".decode("CP1251"))
То в диалоге:
self.tr("Select folder")
такой номер не проходит и кодировка отображается не правильно.
The gray Cardinal
Landing
Как нет примера? А это:
Ты не понимаешь, что такое “пригодный для запуска пример”? Это то, что можно скопипастить и нажать F5, и оно не упадёт при проверке синтаксиса, ёлы-палы. Вот пригодный для запуска пример (найди различия с теми фрагментами, которые ты постил выше):
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
directory = QtGui.QFileDialog.getExistingDirectory(None, u'ПРЕВЕД МЕДВЕД', u'C:\\Temp\\Закачки',
QtGui.QFileDialog.DontResolveSymlinks | QtGui.QFileDialog.ShowDirsOnly)
QtGui.QMessageBox.information(None, u'ВЫ ВЫБРАЛИ:', directory, QtGui.QMessageBox.Ok)
Кстати, где у тебя там кракозябры, я так до конца и не понял. Но мой пример работет без кракозябров.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB