0

是否可以将 qtdesigner 中所有内容的可翻译复选框设置为默认禁用。我只需要一种语言,并且更喜欢更简洁的自动生成代码,将 retranslateUI 函数留空并在构造函数中设置所有内容。

将所有内容的复选框设置为禁用非常烦人。

4

1 回答 1

0

Qt设计器不允许这样做,这是插件的默认配置,所以我会提出一个解决方法,用一个小脚本修改.ui来禁用该属性:

from PyQt4 import QtCore, QtXml

if __name__ == '__main__':

    filename = "/path/of/your_file.ui"

    file = QtCore.QFile(filename)
    if not file.open(QtCore.QFile.ReadOnly):
        sys.exit(-1)

    doc = QtXml.QDomDocument()
    if not doc.setContent(file):
        sys.exit(-1)
    file.close()

    strings = doc.elementsByTagName("string")
    for i in range(strings.count()):
        strings.item(i).toElement().setAttribute("notr", "true")

    if not file.open(QtCore.QFile.Truncate|QtCore.QFile.WriteOnly):
        sys.exit(-1)

    xml = doc.toByteArray()
    file.write(xml)
    file.close()

笔记:

该脚本与 PyQt4、PyQt5、PySide 和 PySide2 兼容,它们只应将 PyQt4 更改为其他库的名称。

于 2018-08-26T21:04:12.917 回答