1. 程式人生 > >pyqt根據列舉值列印列舉變數名

pyqt根據列舉值列印列舉變數名

Usually, you can do this using the QMetaObject: 在QT中通常使用QMetaObject和QMetaEnum完成這一操作:

mo = QtGui.QFrame.staticMetaObject
QMetaEnum me = mo.enumerator(mo.indexOfEnumerator('Shadow'))
me.valueToKey(QtGui.QFrame.Sunken)

輸出: Sunken

然而,pyqt中的列舉沒有暴露元物件,所以必須通過在Python中遍歷列舉的屬性來做到這一點(幸運的是PyQt列舉是int的子類,因此可以通過isinstance來識別): However it appears that QPrinter hasn’t exposed a meta object, so you’ll have to do it by walking QPrinter’s attributes in Python (fortunately PyQt enums are subclasses of int, so can be identified by isinstance):

page_sizes = dict((n, x) for x, n in vars(QtGui.QPrinter).items() if
                  isinstance(n, QtGui.QPrinter.PageSize))
                  
print(page_sizes[QtGui.QPrinter.A4])
或 page_sizes[0]
或 page_sizes['A4']

輸出: A4