PySide2-uic 为不相关的小部件生成越来越多的项目索引



我有一个关于pyside2-uic的问题,因为它似乎生成了错误的代码。 首先,没有办法在Qt设计器中禁用翻译吗?禁用每个字符串的可翻译复选框很痛苦,我发现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))

刚刚得到了新版本的 PySide2。现在似乎已修复。如果你使用 pip,只需运行"pip install --upgrade PySide2"即可升级。

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

我建议您创建一个错误报告。

最新更新