【问题标题】:PyQt: Center QPainter text with drawText in QPrinterPyQt:在 QPrinter 中使用 drawText 居中 QPainter 文本
【发布时间】:2018-02-28 08:58:56
【问题描述】:

我正在尝试将文本集中在普通 A4 大小的作品集中,获得的尺寸是正确的,但它没有居中,我不知道是什么原因,这里我给你看代码

from PyQt4.QtGui import QPrinter,QPainter,QApplication
from PyQt4.QtCore import Qt,QRectF
import sys

app = QApplication(sys.argv)

printer = QPrinter()
painter = QPainter()

printer.setOutputFileName("prueba.pdf")
printer.setOutputFormat(QPrinter.PdfFormat)

printer.setPageMargins(0.0,0.0,0.0,0.0,1)
printer.setFullPage(True)
margin = printer.getPageMargins(1)
print margin
size = printer.paperSize(1)
width = size.width()
print width

painter.begin(printer)
painter.drawText(QRectF(0.0,0.0,width,50.0),Qt.AlignCenter|Qt.AlignTop,"abcdefghijklmn")
painter.end()

如您所见,我得到了对开类型点大小的宽度,并且将对开的整个宽度放置得不均匀

【问题讨论】:

    标签: python pyqt pyqt4 qpainter qprinter


    【解决方案1】:

    QPrinter 使用不同类型的units of measure

    QPrinter.Unit

    此枚举类型用于指定页面和纸张尺寸的度量单位。

    Constant  Value
    QPrinter.Millimeter   0
    QPrinter.Point        1
    QPrinter.Inch         2
    QPrinter.Pica         3
    QPrinter.Didot        4
    QPrinter.Cicero       5
    QPrinter.DevicePixel  6
    

    当您通过paperSize() 方法获取大小时,您要求以QPrinter.Point 为单位,但QPainter 使用以像素为单位的坐标,即QPrinter.DevicePixel,因此获得的宽度与宽度不同以像素为单位,如果我们只是改变测量单位的类型,如下所示:

    app = QApplication(sys.argv)
    
    printer = QPrinter()
    painter = QPainter()
    
    printer.setOutputFileName("prueba.pdf")
    printer.setOutputFormat(QPrinter.PdfFormat)
    
    printer.setPageMargins(0.0, 0.0, 0.0, 0.0, QPrinter.Point)
    printer.setFullPage(True)
    margin = printer.getPageMargins(QPrinter.Point)
    print(margin)
    size = printer.paperSize(QPrinter.DevicePixel)
    width = size.width()
    print(width)
    
    painter.begin(printer)
    painter.drawText(QRectF(0.0,0.0,width,50.0), Qt.AlignCenter|Qt.AlignTop, "abcdefghijklmn")
    painter.end()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多