缩放和打印PyQ

2024-04-26 22:16:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试打印一个主窗口及其小部件。理想情况下,它应该适合页面。 我尝试了以下代码,但没有成功!有人知道怎么做吗?在

def printViewCustomer(self):
    printer=QtPrintSupport.QPrinter()
    dialog=QtPrintSupport.QPrintDialog(printer,self)
    if (dialog.exec_()!=QtWidgets.QDialog.Accepted):
        return
    printWidget=self.mainViewWidget
    painter=QtGui.QPainter(printer)
    painter.begin(printer)
    print(printer.paperRect().x())
    XScale=(printer.pageRect().width()/ (printWidget.width()))
    YScale=(printer.pageRect().height()/(printWidget.height()))
    Scale=(min(XScale,YScale))
    painter.translate((printer.paperRect().x()) + (printer.pageRect().width()/2),(printer.paperRect().y) + (printer.pageRect().height()/2))
    painter.scale(Scale,Scale)
    painter.translate(-1*printWidget.width()/2,-1*printWidget.height()/2)
    printWidget.render(painter)
    painter.end()

这是一个尝试的翻译

^{pr2}$

Tags: self部件widthprintertranslatedialogheightscale
1条回答
网友
1楼 · 发布于 2024-04-26 22:16:19

让我们考虑一下错误:

TypeError: unsupported operand type(s) for +: 'builtin_function_or_method' and 'float' 

在我们做任何事之前,先读一下。“不支持+”的操作数类型。好吧,这听起来像Python试图添加两个东西,其中一个不能添加。多读一点,然后“内置函数”或“方法”和“float”。听起来好像你在试图给一个方法/函数添加一个float,但这没有任何意义。在

因此,为了修复您遇到的错误:

^{pr2}$

应该是

painter.translate((printer.paperRect().x()) + (printer.pageRect().width()/2), (printer.paperRect().y()) + (printer.pageRect().height()/2))

请注意,您忘记了调用函数y,而是尝试使用y的值,它是指向函数的指针。您可能忘记了Qt使用方法来访问这样的变量,这是可以原谅的。允许^ properties访问可能是更为庞大的,但这是PySt/PyQT包C++的方式。在

很明显你的代码出了什么问题,一旦你发布了错误-请尽量记住在将来包括这样的东西,以节省别人的时间。在

现在怎么样了?在

相关问题 更多 >