PySide2-uic 为不相关的小部件生成递增的项目索引
PySide2-uic generates increasing item index for unrelated widgets
我有一个关于 pyside2-uic
的问题,因为它似乎生成了错误代码。
首先,有没有办法在 Qt Designer 中禁用翻译?禁用每个字符串的可翻译复选框很痛苦,我发现 retranslateUi
代码有点乱。
现在是真正的问题:如您所见,pyside2-uic
似乎增加了项目位置计数,即使对于不相关的小部件也是如此。如果我创建一个 subclass 并执行它,像 combox_wb
这样的组合框不带有默认值,因为项目 7-9 可能不存在并且可能应该是 0-2。 (我知道您可以将它们留空并在继承自 uic 生成的 class 中手动进行设置)。
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。
刚拿到新版PySide2。好像现在修好了。如果使用pip,只需运行"pip install --upgrade PySide2"升级即可。
我有一个关于 pyside2-uic
的问题,因为它似乎生成了错误代码。
首先,有没有办法在 Qt Designer 中禁用翻译?禁用每个字符串的可翻译复选框很痛苦,我发现 retranslateUi
代码有点乱。
现在是真正的问题:如您所见,pyside2-uic
似乎增加了项目位置计数,即使对于不相关的小部件也是如此。如果我创建一个 subclass 并执行它,像 combox_wb
这样的组合框不带有默认值,因为项目 7-9 可能不存在并且可能应该是 0-2。 (我知道您可以将它们留空并在继承自 uic 生成的 class 中手动进行设置)。
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。
刚拿到新版PySide2。好像现在修好了。如果使用pip,只需运行"pip install --upgrade PySide2"升级即可。