上下文菜单未显示正确的PyQt5语言

2024-04-25 18:49:07 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图使用PyQt5创建Qt应用程序时,我注意到QPlainTextEdit标准上下文菜单是用英语显示的,而英语不是我系统的语言(葡萄牙语),尽管它的语言环境是从其父小部件正确继承的。这是预期的行为吗?如果是这样的话,我如何才能添加翻译而不必重写上下文菜单中已经存在的功能(如剪切/复制/粘贴)?在

示例

这个程序复制了上面描述的行为;它显示了一个窗口(因此textEditor.locale().language()QLocale.Portuguese具有相同的值),但是上下文菜单是用英语显示的。 在

import sys
from PyQt5.QtWidgets import QApplication, QPlainTextEdit, QMainWindow
from PyQt5.QtCore import QLocale

def main():
    app = QApplication(sys.argv)

    window = QMainWindow()  

    assert(window.locale().language() == QLocale.Portuguese)    
    textEditor = QPlainTextEdit(window)

    assert(textEditor.locale().language() == QLocale.Portuguese)
    window.setCentralWidget(textEditor)
    window.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

Tags: fromimport语言mainsys菜单windowlanguage
1条回答
网友
1楼 · 发布于 2024-04-25 18:49:07

您需要安装一个^{}来为您的系统区域设置添加翻译。在

import sys
from PyQt5.QtWidgets import QApplication, QPlainTextEdit, QMainWindow
from PyQt5.QtCore import QLocale, QTranslator, QLibraryInfo

def main():
    app = QApplication(sys.argv)

    # Install provided system translations for current locale
    translator = QTranslator()
    translator.load('qt_' + QLocale.system().name(), QLibraryInfo.location(QLibraryInfo.TranslationsPath))
    app.installTranslator(translator)

    window = QMainWindow()

    assert(window.locale().language() == QLocale.Portuguese)
    textEditor = QPlainTextEdit(window)

    assert(textEditor.locale().language() == QLocale.Portuguese)
    window.setCentralWidget(textEditor)
    window.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

相关问题 更多 >