Auf dem QL-570 unter PyQT drucken
Posted by wnf on Sunday, 26 July 2015Literatur:
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_())