QtDesigner Pyqt / Pyside默认禁用可翻译

时间:2018-08-26 19:35:57

标签: python pyqt qt-designer uic

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

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

1 个答案:

答案 0 :(得分: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。