Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 11, 2009 08:38:24

Landing
От:
Зарегистрирован: 2008-07-01
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка строк в QListWidget

Как вывести текст строки в читаемом виде?
Сейчас выводится:
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()



Офлайн

#2 Янв. 11, 2009 15:33:08

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка строк в QListWidget

Офлайн

#3 Янв. 12, 2009 05:39:40

Landing
От:
Зарегистрирован: 2008-07-01
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка строк в QListWidget

Все это понятно, но проблема в гуи. Как объяснить присвоение лабелу значения переменной и лабел отображает ее корректно, но стоит написать print переменная, как появляются ??? ??? ?? или ‘ascii’ codec can't encode characters in position 26-30: ordinal not in range(128)
Все перечисленное в ссылке пробовал в разных вариациях. Если бы получилось, сюда бы не писал.



Офлайн

#4 Янв. 12, 2009 11:50:55

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка строк в QListWidget

Landing
лабел отображает ее корректно, но стоит написать print переменная…
Вот это и говорит о том, что проблема отнюдь не в GUI ;).
Ты бы написал минимальный пример, пригодный для запуска и отладки (только минимальный, портянки постить не надо). А то даже не ясно, в какой кодировке у тебя исходник.



Офлайн

#5 Янв. 15, 2009 06:39:13

Landing
От:
Зарегистрирован: 2008-07-01
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка строк в QListWidget

Спасибо, почти разобрался. Путем комбинаций 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"),



Отредактировано (Янв. 15, 2009 06:40:37)

Офлайн

#6 Янв. 15, 2009 17:09:46

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка строк в QListWidget

Landing
Как в этом месте заставить показывать рус буквы?
Что значит “русские буквы”? Тебе перевод нужен?
Python: интернационализация приложений pyQT4



Офлайн

#7 Янв. 16, 2009 12:24:25

Landing
От:
Зарегистрирован: 2008-07-01
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка строк в QListWidget

Русские буквы, имеется ввиду их отображение не кракозябрами.



Офлайн

#8 Янв. 16, 2009 13:52:34

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка строк в QListWidget

Нет примера, пригодного для запуска и отладки, поэтому непонятно, с чем боремся.



Офлайн

#9 Янв. 18, 2009 10:01:34

Landing
От:
Зарегистрирован: 2008-07-01
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка строк в QListWidget

Как нет примера? А это:

QtGui.QFileDialog.getExistingDirectory
Стандартный кутишный вызов диалога для выбора папки. И непонятно каким образом заставить отобразить в “заголовке” не кракозябры.
Если делаю лабелу:
self.label1.setText("Всего обработано:".decode("CP1251"))
То в диалоге:
self.tr("Select folder")
такой номер не проходит и кодировка отображается не правильно.



Офлайн

#10 Янв. 18, 2009 17:10:19

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка строк в QListWidget

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)
Кстати, где у тебя там кракозябры, я так до конца и не понял. Но мой пример работет без кракозябров.



Отредактировано (Янв. 18, 2009 17:16:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version