exibite777
@exibite777
Ведущий системный аналитик

Почему слетает кодировка при загрузке ui-файла из ресурсов?

Имеем:
1) ui-файл сверстанный в QtDesigner, в именах кириллица. Если открыть файл, то в заголовке XML указано UTF-8, блокнот подтверждает кодировку UTF-8
2) Загружаем в ресурсы стандартной командой pyrcc5 resources.qrc -o resources.py
3) Далее пытаемся загрузить
import resources
def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        file = QFile(":/ui/coordWidget.ui")
        file.open(QFile.ReadOnly | QFile.Text)
        stream = QtCore.QTextStream(file)
        text = stream.readAll()
        file = io.StringIO(text) # вот это нагуглил, хотя уверен, что можно как-то взять QTextStream выше, но как не понял
        uic.loadUi(file, self)
В итоге кракозябры, причем если на финише сохранить в файл text, то блокнот снова подтвердит, что там кодировка UTF-8. Прямая загрузка из ui-файла проходит штатно.
Подскажите как исправить?
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 1
seven5674
@seven5674
Старый я уже что бы что-то в себе менять
хм... что ты пытаешься сделать вот этим file = QFile(":/ui/coordWidget.ui") я чето не понимаю

Существует два способа загрузки ui файлов
1. С использованием модуля uic
spoiler

from PyQt5 import QtWidgets, uic 
import sys 
app = QtWidgets.QApplication(sys.argv) 
window = uic.loadUi("MyForm.ui") 
window.show() 
sys.exit(app.exec_())


2. Преобразование UI-файла в PY-файл (pyuic5)
spoiler

pyuic5 MyForm.ui -o ui_MyForm.py
from PyQt5 import QtWidgets 
import sys, ui_MyForm 
app = QtWidgets.QApplication(sys.argv) 
window = QtWidgets.QWidget() 
ui = ui_MyForm.Ui_MyForm() 
ui.setupUi(window) 
window.show() 
sys.exit(app.exec_())

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы