我对pyside2-uic有疑问,因为它似乎会生成错误的代码。
首先,有没有办法在Qt Designer中禁用翻译?禁用每个字符串的可翻译复选框是很痛苦的,我发现retranslateUi代码有些混乱。

现在到一个真正的问题:如您所见,即使对于不相关的小部件,pyside2-uic似乎也会增加项目位置计数。如果我创建一个子类并执行它,则combox_wb之类的组合框将不带有默认值,因为项目7-9可能不存在,可能应该为0-2。 (我知道您可以将它们保留为空,并在从uic生成的类继承的类中手动进行设置)。

def retranslateUi(self, MainWindow):
    self.gbox_settings.setTitle(QtWidgets.QApplication.translate("MainWindow", "settings", None, -1))
    self.combox_colorspace.setItemText(0, QtWidgets.QApplication.translate("MainWindow", "0   Raw color (unique to each camera)", None, -1))
    self.combox_colorspace.setItemText(1, QtWidgets.QApplication.translate("MainWindow", "1   sRGB D65 (default)", None, -1))
    self.combox_colorspace.setItemText(2, QtWidgets.QApplication.translate("MainWindow", "2   Adobe RGB (1998) D65", None, -1))
    self.combox_colorspace.setItemText(3, QtWidgets.QApplication.translate("MainWindow", "3   Wide Gamut RGB D65", None, -1))
    self.combox_colorspace.setItemText(4, QtWidgets.QApplication.translate("MainWindow", "4   Kodak ProPhoto RGB D65", None, -1))
    self.combox_colorspace.setItemText(5, QtWidgets.QApplication.translate("MainWindow", "5   XYZ", None, -1))
    self.combox_colorspace.setItemText(6, QtWidgets.QApplication.translate("MainWindow", "6   ACES", None, -1))
    self.combox_wb.setItemText(7, QtWidgets.QApplication.translate("MainWindow", "ignore camera white balance", None, -1))
    self.combox_wb.setItemText(8, QtWidgets.QApplication.translate("MainWindow", "use camera white balance", None, -1))
    self.combox_wb.setItemText(9, QtWidgets.QApplication.translate("MainWindow", "specify  own raw white balance", None, -1))
    self.combox_gamma.setItemText(10, QtWidgets.QApplication.translate("MainWindow", "linear", None, -1))
    self.combox_gamma.setItemText(11, QtWidgets.QApplication.translate("MainWindow", "sRGB", None, -1))
    self.combox_bitdepth.setItemText(12, QtWidgets.QApplication.translate("MainWindow", "16-bit", None, -1))
    self.combox_bitdepth.setItemText(13, QtWidgets.QApplication.translate("MainWindow", "8-bit", None, -1))
    self.tbtn_dcrawexec.setText(QtWidgets.QApplication.translate("MainWindow", "...", None, -1))

最佳答案

这是由PySide中的错误引起的。使用PyQt或旧的PySide时,相同的ui文件将按预期工作(即,每个小部件的索引从零重新开始)。查看pyside2uic/uiparser.py的代码表明,它们使用共享属性(self.item_nr)进行索引编制-但是对于树小部件,它只能重置为零。

我建议您创建一个bug report

09-03 19:53