pyqt根據列舉值列印列舉變數名
阿新 • • 發佈:2018-12-13
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