我一直在为QGIS制作一些脚本,以便通过作曲家自动生成地图集。
我遇到的唯一问题是我无法正确对齐作曲家标签。这是代码示例:
composerLabel = QgsComposerLabel(c)
newFont = QFont("times", 40)
composerLabel.setFont(newFont)
composerLabel.setText("Hello world")
composerLabel.adjustSizeToText()
composerLabel.setItemPosition(c.paperWidth() / 2,0)
composerLabel.setHAlign(Qt.AlignCenter)
c.addItem(composerLabel)
Here's what the image output looks like
我已经看过API和PYQGIS论坛,但没有人听起来他们有类似的对齐问题。任何人都可以看到我可能会出错的地方吗?
答案 0 :(得分:1)
您只需在# add label
composerLabel = QgsComposerLabel(c)
newFont = QFont("times", 40)
composerLabel.setFont(newFont)
composerLabel.setText("Hello world")
composerLabel.adjustSizeToText()
composerLabel.setItemPosition(c.paperWidth() / 2,0,QgsComposerItem.UpperMiddle)
composerLabel.setHAlign(Qt.AlignCenter)
c.addComposerLabel(composerLabel)
方法中添加 ItemPositionMode 。
public static class CBaseExtensions
{
///<param name="Searchstring"> String nach dem die Lastenliste durchsucht werden soll </param>
///<param name="Parameter"> NAME für Lastenname, ALIASNAME oder DESCRIPTION</param>
public static T GetItem<T>(this Collection<T> self, string Searchstring, string Parameter = "NAME") where T : CBase
{
if (self.Count == 0) return null;
if (Searchstring.Length == 0) return null;
switch (Parameter) // Parameter auswerten
{
case ("NAME"): return self.FirstOrDefault(item => item.Name == Searchstring);
case ("DESCRIPTION"): return self.FirstOrDefault(item => item.Description == Searchstring);
default: throw new System.Exception($"Suchparameter {Parameter} nicht vorhanden");
}
}
}