Works for me: valLabel=QgsPalLayerSettings() valLabel.readFromLayer(iface.activeLayer()) valLabel.fontSizeInMapUnits=True valLabel.writeToLayer(iface.activeLayer()) iface.mapCanvas().refresh() ------- For the data-defined way check [QgsPalLayerSettings::DataDefinedProperties FontSizeUnit][1] and [enum QgsPalLayerSettings::SizeUnit][2] >Units used for option sizes, before being converted to rendered sizes. > >Enumerator >Points >MM >MapUnits >Percent [1]: http://qgis.org/api/classQgsPalLayerSettings.html#aa4a68d8eea503219523ce0c7f0ba3ceaa7825f9191edeb5245e5589f768616cb1 [2]: http://qgis.org/api/classQgsPalLayerSettings.html#a6a79cd114865439dd9a4668abd927597