QL-570

Auf dem QL-570 unter PyQT drucken

Literatur:

So funktioniert es: handleQL570

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from PyQt4 import QtGui, QtCore

class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.setWindowTitle(self.tr('Document Printer'))
        self.editor = QtGui.QTextEdit(self)
        self.editor.textChanged.connect(self.handleTextChanged)
        self.buttonQL570 = QtGui.QPushButton('QL-570', self)
        self.buttonQL570.clicked.connect(self.handleQL570)
        self.buttonPrint = QtGui.QPushButton('Print', self)
        self.buttonPrint.clicked.connect(self.handlePrint)
        self.buttonPreview = QtGui.QPushButton('Preview', self)
        self.buttonPreview.clicked.connect(self.handlePreview)
        layout = QtGui.QGridLayout(self)
        layout.addWidget(self.editor, 0, 0, 1, 3)
        layout.addWidget(self.buttonQL570, 1, 0)
        layout.addWidget(self.buttonPrint, 1, 1)
        layout.addWidget(self.buttonPreview, 1, 2)
        self.beispielText()
        self.handleTextChanged()

    def beispielText(self):
        self.editor.clear()
        self.editor.setHtml(u'Vorname Name<br>Straße<br><strong>PLZ Ort</strong>')

    def handlePrint(self):
        dialog = QtGui.QPrintDialog()
        if dialog.exec_() == QtGui.QDialog.Accepted:
            self.editor.document().print_(dialog.printer())

    def handlePreview(self):
        dialog = QtGui.QPrintPreviewDialog()
        dialog.paintRequested.connect(self.editor.print_)
        dialog.exec_()

    def handleQL570(self):
        tp = QtGui.QPrinter()
        # Es muss natürlich einen eingerichteten Drucker  mit dem Namen geben
        tp.setPrinterName('QL-570')
        # Das Setzen der Papiergröße funktioniert nicht,
        # es wir die im Druckertreiber eingestellte Papiergröße verwendet
        # Ohne Wirkung: tp.setPaperSize( QtCore.QSizeF( 29, 62 ), QtGui.QPrinter.Millimeter )
        tp.setOrientation( QtGui.QPrinter.Landscape)
        tp.setPageMargins(2,2,2,2, QtGui.QPrinter.Millimeter)
        self.editor.document().print_(tp)

    def handleTextChanged(self):
        enable = not self.editor.document().isEmpty()
        self.buttonPrint.setEnabled(enable)
        self.buttonPreview.setEnabled(enable)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.resize(640, 480)
    window.show()
    sys.exit(app.exec_())