在Designer中为在PyQt

时间:2018-01-15 00:26:34

标签: python qt pyqt pyqt5

我正在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)?

0 个答案:

没有答案