2017-02-25 76 views
1

我写pyqt5一些代码,在主主创建一个表:印刷在pyqt5

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_()) 

我想知道我怎么可以打印从我的程序的主页?

+0

打印内容更换screen = self.editor.grab()?哪里?到控制台? – mFoxRU

+0

@mFoxRU打印主页 - 打印机 – amirhoseinnnn

+0

所以你想打印一个窗口的“截图”? – mFoxRU

回答

2

这可以使用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.grab()