【转】PyQt4 精彩实例分析 实例 25 打印文本

打印文本在文本编辑工作中经常使用,本实例实现使用打印机打印文本的功能,如下图所示。

具体实现代码如下:

  1. # -*- coding: utf-8 -*-   
  2. from PyQt4.QtGui import *  
  3. from PyQt4.QtCore import *  
  4. import sys  
  5.   
  6. QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))  
  7.   
  8. class MainWindow(QMainWindow):  
  9.     def __init__(self,parent=None):  
  10.         super(MainWindow,self).__init__(parent)  
  11.         self.setWindowTitle(self.tr("打印机"))  
  12.         self.text=QTextEdit()  
  13.         self.setCentralWidget(self.text)  
  14.           
  15.         self.createActions()  
  16.         self.createMenus()  
  17.         self.createToolBars()  
  18.   
  19.         file=QFile("QPrinter.txt")  
  20.         if file.open(QIODevice.ReadOnly|QIODevice.Text):  
  21.             textStream=QTextStream(file)  
  22.             while not textStream.atEnd():  
  23.                 self.text.append(textStream.readLine())  
  24.         file.close()  
  25.   
  26.     def createActions(self):  
  27.         self.PrintAction=QAction(QIcon("images/print.png"),self.tr("打印"),self)  
  28.         self.PrintAction.setShortcut("Ctrl+P")  
  29.         self.PrintAction.setStatusTip(self.tr("打印"))  
  30.         self.connect(self.PrintAction,SIGNAL("triggered()"),self.slotPrint)  
  31.   
  32.     def createMenus(self):  
  33.         PrintMenu=self.menuBar().addMenu(self.tr("打印"))  
  34.         PrintMenu.addAction(self.PrintAction)  
  35.   
  36.     def createToolBars(self):  
  37.         fileToolBar=self.addToolBar("Print")  
  38.         fileToolBar.addAction(self.PrintAction)  
  39.   
  40.     def slotPrint(self):  
  41.         printer=QPrinter()  
  42.         printDialog=QPrintDialog(printer,self)  
  43.         if printDialog.exec_():  
  44.             doc=self.text.document()  
  45.             doc.print_(printer)  
  46.           
  47. app=QApplication(sys.argv)  
  48. main=MainWindow()  
  49. main.show()  
  50. 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行打印。

posted @ 2014-11-19 11:10  jakey.chen  阅读(1048)  评论(0)    收藏  举报