我正在PyQt中创建一些自定义小部件,这些小部件将用于Qt的Designer。
其中一些属性为Q_FLAGS
,例如QtCore.Qt.AlignmentFlag
的一些。因为我不会使用整个QtCore.Qt.Alignment
标志(这是不必要的并且造成混淆),所以我创建了一个QFlags类。
class SomeWidget(QtWidgets.QWidget):
class LabelAlignment:
AlignLeft = int(QtCore.Qt.AlignLeft)
AlignHCenter = int(QtCore.Qt.AlignHCenter)
AlignRight = int(QtCore.Qt.AlignRight)
AlignTop = int(QtCore.Qt.AlignTop)
AlignVCenter = int(QtCore.Qt.AlignVCenter)
AlignBottom = int(QtCore.Qt.AlignBottom)
QtCore.Q_FLAGS(LabelAlignment)
(注意:我正在使用int()
转换,因为我需要执行一些按位操作,而AFAIK,标志pyqtProperty始终在Designer的属性表中被读为int
;我试图使用plain标志,但结果是一样的)
问题是标志在Designer的属性编辑器中以不可预测的顺序排序。我假设是由于使用LabelAlignment.__dict__
来映射类的标志,因此创建了一个“未排序”的标志列表(显然,每次Designer加载插件接口时都会更改) ,因为python的dicts是无序的。)
有没有办法订购这些标志(可能使用OrderedDict)?