python - 从pyqt5的主页打印

标签 python python-3.x pyqt pyqt5 qprinter

我在 pyqt5 中编写了一些代码,在 main main 中创建一个表:

class Ui_MainWindow(object):
    def setupUi(self, MainWindow): ...
    def retranslateUi(self, MainWindow):...
        self.pushButton.setText(_translate("MainWindow", "print"))
        self.pushButton.clicked.connect(self.printer)
    def printer(self):...

并通过以下方式使用此类:

app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())

我想知道如何从程序的主页进行打印?

最佳答案

使用 QPrinter 可以相当容易地完成此操作类。

下面是如何执行此操作的详细注释示例。

import sys

from PyQt5 import QtGui, QtWidgets, QtPrintSupport


class App(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        # Create some widgets
        self.setGeometry(500, 500, 300, 300)
        self.button = QtWidgets.QPushButton(
            'Print QTextEdit widget (the one below)', self)
        self.button.setGeometry(20, 20, 260, 30)
        self.editor = QtWidgets.QTextEdit(
            'Wow such text why not change me?', self)
        self.editor.setGeometry(20, 60, 260, 200)
        self.button.clicked.connect(self.print_widget)

    def print_widget(self):
        # Create printer
        printer = QtPrintSupport.QPrinter()
        # Create painter
        painter = QtGui.QPainter()
        # Start painter
        painter.begin(printer)
        # Grab a widget you want to print
        screen = self.editor.grab()
        # Draw grabbed pixmap
        painter.drawPixmap(10, 10, screen)
        # End painting
        painter.end()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    gui = App()
    gui.show()
    app.exec_()

要打印整个窗口,只需将 screen = self.editor.grab() 替换为 screen = self.grab()

关于python - 从pyqt5的主页打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42455904/

相关文章:

python - 从 Python 使用 Titan Graph 数据库

Python多个类调用特定类时出错

python - 导入使用 PyInstaller 点引用的本地模块

python - 我想将文本放入 pyqt QCalendarWidget

qt - 在 QDialog 中,调整窗口大小以包含 QTableView 的所有列

python - 从 AWS Python lambda 函数返回 html 页面

python - Matplotlib 条形图 x Axis 下方的负值

python - 如何在 PyQt5 GUI 中显示 Folium map ?

python - 将 python pandas DataFrame 转换为 R dataframe 以与 rpy2 一起使用的问题

python - 通过 Python 中的索引列表访问 Matrix 的元素,以在没有 for 循环的情况下将 max(val, 0.5) 应用于每个值