from PyQt5.QtGui import QFont,QTextDocument,QTextCursor
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QSizePolicy, QAction,QDialog
from PyQt5.QtPrintSupport import QPrinter, QPrintDialog,QPrintPreviewDialog
import sys ################################################
#######打印文本---海子的诗
################################################
the_text = '''
从明天起,做一个幸福的人
喂马、劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开
''' class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setWindowTitle(self.tr("打印功能")) # 创建文本框
self.label = QLabel()
self.label.setFont(QFont("宋体",12,QFont.Bold))
self.label.setText(the_text)
self.setCentralWidget(self.label) # 创建菜单栏
self.createMenus() def createMenus(self):
# 创建动作一
self.printAction1 = QAction(self.tr("打印无预留"), self)
self.printAction1.triggered.connect(self.on_printAction1_triggered) # 创建动作二
self.printAction2 = QAction(self.tr("打印有预留"), self)
self.printAction2.triggered.connect(self.on_printAction2_triggered) # 创建动作三
self.printAction3 = QAction(self.tr("直接打印"), self)
self.printAction3.triggered.connect(self.on_printAction3_triggered) # 创建动作四
self.printAction4 = QAction(self.tr("打印到PDF"), self)
self.printAction4.triggered.connect(self.on_printAction4_triggered) # 创建菜单,添加动作
self.printMenu = self.menuBar().addMenu(self.tr("打印"))
self.printMenu.addAction(self.printAction1)
self.printMenu.addAction(self.printAction2)
self.printMenu.addAction(self.printAction3)
self.printMenu.addAction(self.printAction4) # 动作一:打印,无预览
def on_printAction1_triggered(self):
printer = QPrinter()
printDialog = QPrintDialog(printer, self)
if printDialog.exec_() == QDialog.Accepted:
self.handlePaintRequest(printer) # 动作二:打印,有预览
def on_printAction2_triggered(self):
dialog = QPrintPreviewDialog()
dialog.paintRequested.connect(self.handlePaintRequest)
dialog.exec_() # 动作三:直接打印
def on_printAction3_triggered(self):
printer = QPrinter()
self.handlePaintRequest(printer) # 动作四:打印到pdf
def on_printAction4_triggered(self):
printer = QPrinter()
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName("D:/pdf打印测试.pdf")
self.handlePaintRequest(printer) ## 打印函数
def handlePaintRequest(self, printer):
document = QTextDocument()
cursor = QTextCursor(document)
cursor.insertText(self.label.text())
document.print(printer) if __name__ == "__main__":
app = QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())

【PyQt5-Qt Designer】读取txt文件在打印的更多相关文章

  1. QT 读取txt文件的几种方法

    废话不说直接上代码 1. QString displayString; QFile file("/home/alvin/text.txt"); if(!file.open(QIOD ...

  2. Qt读取TXT文件时,GBK与UTF-8编码判断

    读取txt文件时,很多时候无法获取文件的编码格式.如果直接进行使用,则有可能出现乱码.需要在使用前将其转为Unicode(Qt的默认编码格式). 虽然实际的编码格式种类非常多,但平常主要使用的有GBK ...

  3. web端自动化——Python读取txt文件、csv文件、xml文件

    1.读取txt文件 txt文件是我们经常操作的文件类型,Python提供了以下几种读取txt文件的方式. 1)read(): 读取整个文件. 2)readline(): 读取一行数据. 3)readl ...

  4. Javascript写入txt和读取txt文件的方法

    文章主要介绍了Javascript写入txt和读取txt文件的方法,需要的朋友可以参考下1. 写入 FileSystemObject可以将文件翻译成文件流. 第一步: 例: 复制代码 代码如下: Va ...

  5. 关于读取txt文件中文乱码问题

    在处理文件的过程中,读取txt文件出现中文乱码.这种情况是由于编码字符不一致导致. public static string ReadFile(string path, string fileName ...

  6. JAVA读取TXT文件、新建TXT文件、写入TXT文件

    1.创建TXT文件 按照正常的逻辑写就好 先定义一个文件给定一个路径——>判断这个路径上这个文件存不存在——>若不存在则建立,try/catch根据程序提示自动生成就好 2.读取TXT文件 ...

  7. 用C#读取txt文件的方法

    1.使用FileStream读写文件 文件头: using System;using System.Collections.Generic;using System.Text;using System ...

  8. C#生成PDF文档,读取TXT文件内容

    using System.IO;using iTextSharp.text;using iTextSharp.text.pdf; //需要在项目里引用ICSharpCode.SharpZipLib.d ...

  9. selenium读取txt文件的几种方式

    1.用java读取txt文件 public static String readFJ(String path) { path = "D:/workspace/hetong.txt" ...

随机推荐

  1. Maven构建Web项目

    1. Maven的作用: [清理项目]→[编译项目]→[测试项目]→[生成测试报告]→[打包项目]→[部署项目] 2. 安装maven maven对JDK版本有要求,所以要设置好JDK的环境变量. M ...

  2. Kafka Java API操作topic

    Kafka官方提供了两个脚本来管理topic,包括topic的增删改查.其中kafka-topics.sh负责topic的创建与删除:kafka-configs.sh脚本负责topic的修改和查询,但 ...

  3. 如何让移植的嵌入式ARM显示中文汉字

    如果你急于在ARM开发板上看到Qt显示中文,而不介意稍次的效果,可以在运行Qt程序时,增加设置字体的参数,比如运行名为hello的Qt程序:./hello -fn unifont 1.首先,需要文泉驿 ...

  4. PHP中const和define()定义常量的细节区别

    转自:http://www.365mini.com/page/difference-of-define-and-const.htm 众所周知,在PHP中(php 4及以后),我们可以使用函数defin ...

  5. 【盘古分词】Lucene.Net 盘古分词 实现公众号智能自动回复

    盘古分词是一个基于 .net framework 的中英文分词组件.主要功能 中文未登录词识别 盘古分词可以对一些不在字典中的未登录词自动识别 词频优先 盘古分词可以根据词频来解决分词的歧义问题 多元 ...

  6. shell 脚本调试

    1.第一行加 -xv #!/bin/bash –xv 2. bash -x shellName 3.如果只想调试其中几行脚本的话可以用 set -x 和 set +x 把要调试的部分包含进来: 比如: ...

  7. 移动端rem自适应布局(切图)

    本篇适用于初次使用rem为单位切图而无从下手的童鞋.核心是根据屏幕动态改变根元素字体大小,以达到适配各种屏幕.这只是一个拿来就用的教程.很多东西没有详细说明.不过对于快速做手机端切图很有帮助. 模板: ...

  8. 给Repeater控件里添加序号的5种方法

    Repeater是我们经常用的一个显示数据集的数据控件,经常我们希望在数据前显示数据的序号,那么我们该怎么为Repeater控件添加序号呢?下面编辑为大家介绍几种常用的为Repeater控件添加序号的 ...

  9. 重新签名IOS .ipa文件 (包含第三方框架和插件)

    本文未经测试,初步看代码流程接近本人想法,留下作记录.Intoduction This code allow you to resign your own ipa assuming that you ...

  10. HTTP协议详解(真的很经典)(转载)

    HTTP协议详解(真的很经典):http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html 引言 HTTP是一个属于应用层的面向对象的协 ...