You can do something like this if it is a function of your MainWindow. self as a argument in grabWidget is your baseWidget, like a QMainWindow for example. No doubt you would have to make sure it fits on the page though and resize it as needed.

   def goPrinter(self):
        printer=QtGui.QPrinter()
        dialog = QtGui.QPrintDialog(printer, self)
        if(dialog.exec_() != QtGui.QDialog.Accepted):
            return
        p=QtGui.QPixmap.grabWidget(self)
        printLabel = QtGui.QLabel()
        printLabel.setPixmap(p)
        painter = QtGui.QPainter(printer)
        printLabel.render(painter)
        painter.end()


jaybstory wrote:
I understand your example for printing Labels.  I'm wondering if there is a
way to just print the entire GUI?  I tried to do this, but its not correct:

 def printd(self):
                printer=QtGui.QPrinter()
                dialog = QtGui.QPrintDialog(printer, self)
                if(dialog.exec_() != QtGui.QDialog.Accepted):
                  return
                printGUI = QtGui.QTabWidget
                painter = QtGui.QPainter(printer)
                printGUI.render(painter)
                painter.end()

maybe I'm not understanding the way render works? Or is this the wrong
approach all together?  Thank you.


Russell Valentine wrote:
Joi Barnett wrote:
thank you for the reply,

do you have an example of how to use QPrinter in python?

I didn't have one, but I just made one really quick. Very simple example. I Cc'd the list in case anyone else had anything to add.


from PyQt4 import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):
     def __init__(self, app):
         QtGui.QMainWindow.__init__(self)
         self.app=app
         self.label=QtGui.QLabel("Print test")
         self.setCentralWidget(self.label)
     def goPrinter(self):
         printer=QtGui.QPrinter()
         dialog = QtGui.QPrintDialog(printer, self)
         if(dialog.exec_() != QtGui.QDialog.Accepted):
             return
         printLabel = QtGui.QLabel("Hello my printer.")
         painter = QtGui.QPainter(printer)
         printLabel.render(painter)
         painter.end()

if __name__ == "__main__":
     import sys
     app = QtGui.QApplication(sys.argv)
     window=MainWindow(app)
     window.show()
     QtCore.QTimer.singleShot(1000, window.goPrinter)
     #ui.show()
     sys.exit(app.exec_())

_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt




_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to