【转】PyQt4 精彩实例分析 实例 25 打印文本
打印文本在文本编辑工作中经常使用,本实例实现使用打印机打印文本的功能,如下图所示。

具体实现代码如下:
- # -*- coding: utf-8 -*-
- from PyQt4.QtGui import *
- from PyQt4.QtCore import *
- import sys
- QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))
- class MainWindow(QMainWindow):
- def __init__(self,parent=None):
- super(MainWindow,self).__init__(parent)
- self.setWindowTitle(self.tr("打印机"))
- self.text=QTextEdit()
- self.setCentralWidget(self.text)
- self.createActions()
- self.createMenus()
- self.createToolBars()
- file=QFile("QPrinter.txt")
- if file.open(QIODevice.ReadOnly|QIODevice.Text):
- textStream=QTextStream(file)
- while not textStream.atEnd():
- self.text.append(textStream.readLine())
- file.close()
- def createActions(self):
- self.PrintAction=QAction(QIcon("images/print.png"),self.tr("打印"),self)
- self.PrintAction.setShortcut("Ctrl+P")
- self.PrintAction.setStatusTip(self.tr("打印"))
- self.connect(self.PrintAction,SIGNAL("triggered()"),self.slotPrint)
- def createMenus(self):
- PrintMenu=self.menuBar().addMenu(self.tr("打印"))
- PrintMenu.addAction(self.PrintAction)
- def createToolBars(self):
- fileToolBar=self.addToolBar("Print")
- fileToolBar.addAction(self.PrintAction)
- def slotPrint(self):
- printer=QPrinter()
- printDialog=QPrintDialog(printer,self)
- if printDialog.exec_():
- doc=self.text.document()
- doc.print_(printer)
- app=QApplication(sys.argv)
- main=MainWindow()
- main.show()
- app.exec_()
第11行设置窗体使用的字体和窗体标题。
第12,13行创建一个QTextEdit控件text,并设置为中心窗体。
第15-17行创建菜单,工具条等部件。
第19-24行从文本文件QPrinter.txt中逐行读取数据并显示在text中。
第41行新建一个QPrinter对象。
第42行创建一个QPrintDialog对象,参数为QPrinter对象。
QPrintDialog是Qt提供的标准对话框,为打印机的使用提供了一种方便,规范的方法。如下图所示,QPrintDialog标准对话框提供了打印机的选择,配置功能,并允许使用者改变文档有关的设置,如页面大小,方向,打印类型(彩色/灰度),页边距以及打印份数等。

第43行判断打印对话框显示后用户是否单击“打印”按钮,或单击“打印”按钮,则相关打印属性将就可以通过创建QPrintDialog对象时使用的QPrinter对象获得,或用户单击“取消”按钮,则不执行后续的打印操作。
第44行获得QTextEdit对象的文档。
第45行打印。

浙公网安备 33010602011771号