Не сохраняется локализация pyqt6
Использовал следующий код:
main.py
import sys
import locale
from PySide6 import QtCore
from PySide6.QtWidgets import QApplication, QWidget, QMessageBox
from mainwindow import MainWindow
if __name__ == '__main__':
app=QApplication(sys.argv)
window=MainWindow()
translator = QtCore.QTranslator(app)
locale = QtCore.QLocale.system().name()
path = QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)
translator.load('qt_%s' % locale, path)
app.installTranslator(translator)
window.show()
sys.exit(app.exec())
mainwindow.py
from PySide6.QtWidgets import QMainWindow, QDialogButtonBox, QMessageBox
from base_ui.ui_mainwindow import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__ (self):
super(MainWindow, self).__init__()
self.ui=Ui_MainWindow()
self.ui.setupUi(self)
self.ui.buttonBox.button(QDialogButtonBox.Ok).setText("пуш ми")
self.ui.buttonBox.button(QDialogButtonBox.Ok).clicked.connect(self.clear_area_f)
def clear_area_f(self, event):
reply = QMessageBox.question(self,'Предупреждение',"Вы действительно хотите нажать?", QMessageBox.Yes, QMessageBox.No)
if reply == 16384: # кнопка ОК. Как по другому?
print("да")
elif reply == 65536:
print("неда")
ui_mainwindow.py
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
QMetaObject, QObject, QPoint, QRect,
QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QAbstractButton, QApplication, QDialogButtonBox, QSizePolicy,
QVBoxLayout, QWidget)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(273, 42)
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
MainWindow.setSizePolicy(sizePolicy)
self.verticalLayout = QVBoxLayout(MainWindow)
self.verticalLayout.setObjectName(u"verticalLayout")
self.buttonBox = QDialogButtonBox(MainWindow)
self.buttonBox.setObjectName(u"buttonBox")
sizePolicy1 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.buttonBox.sizePolicy().hasHeightForWidth())
self.buttonBox.setSizePolicy(sizePolicy1)
self.buttonBox.setMinimumSize(QSize(300, 0))
self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok|QDialogButtonBox.RestoreDefaults)
self.verticalLayout.addWidget(self.buttonBox)
self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"Window", None))
# retranslateUi
Класс MainWindow имеет в себе стандартный объект QDialogButtonBox, при нажатии на одну из кнопок которого вызывается объект QMessageBox
При запуске кода из питона все работает как надо, но при открытии скомпилированного через Pyinstaller файла все стандартные кнопки на английском языке.
Открывал на нескольких ПК. Пробовал заменить текст на кнопках. Получилось это сделать только в QDialogButtonBox.
QMessageBox же возвращает int и обратиться к нему для установки текста не получается.
В чем может быть дело? Куда копнуть? Что проверить?
Также использовал нестандартный шрифт. При открытии скомпилированного файла на другом ПК шрифт используется другой. Понимаю, что это скорее всего неизбежно, так как этот шрифт там не установлен.
Но всё равно упомяну, вдруг есть какой-нибудь способ сохранить данные о шрифте в файл.