
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QTextEdit, QFileDialog, QDialog
from PyQt5.QtGui import QTextDocument
from PyQt5.QtPrintSupport import QPageSetupDialog, QPrintDialog, QPrinter, QPrintPreviewDialog
class Example(QWidget):
def __init__(self):
super().__init__()
self.printer = QPrinter()
self.initUI()
def initUI(self):
self.setGeometry(300, 200, 450, 310)
self.setWindowTitle('关注哈喽吧:学点编程吧--保存、打印文件')
self.tx = QTextEdit(self)
self.tx.setGeometry(20, 20, 300, 270)
self.bt1 = QPushButton('打开文件',self)
self.bt1.move(350,20)
self.bt2 = QPushButton('打开多个文件',self)
self.bt2.move(350,60)
self.bt5 = QPushButton('保存文件',self)
self.bt5.move(350,120)
self.bt6 = QPushButton('页面设置',self)
self.bt6.move(350,160)
self.bt7 = QPushButton('打印预览',self)
self.bt7.move(350,200)
self.bt8 = QPushButton('打印文档',self)
self.bt8.move(350,240)
self.bt1.clicked.connect(self.openfile)
self.bt2.clicked.connect(self.openfiles)
self.bt5.clicked.connect(self.savefile)
self.bt6.clicked.connect(self.pagesettings)
self.bt7.clicked.connect(self.printPreview)
self.bt8.clicked.connect(self.printdialog)
self.show()
def openfile(self):
fname = QFileDialog.getOpenFileName(self, '学点编程吧:打开文件','./')
if fname[0]:
with open(fname[0], 'r',encoding='utf-8',errors='ignore') as f:
self.tx.setText(f.read())
def openfiles(self):
fnames = QFileDialog.getOpenFileNames(self, '学点编程吧:打开多个文件','./')
if fnames[0]:
for fname in fnames[0]:
with open(fname, 'r',encoding='utf-8',errors='ignore') as f:
self.tx.append(f.read())
def savefile(self):
fileName = QFileDialog.getSaveFileName(self, '学点编程吧:保存文件','./',"Text files (*.txt)")
if fileName[0]:
with open(fileName[0], 'w',encoding='utf-8',errors='ignore') as f:
f.write(self.tx.toPlainText())
def pagesettings(self):
printsetdialog = QPageSetupDialog(self.printer,self)
printsetdialog.exec_()
def printPreview(self):
previewdialog = QPrintPreviewDialog()
previewdialog.paintRequested.connect(self.handlePaintRequest)
previewdialog.exec_()
def handlePaintRequest(self, printer):
document = QTextDocument()
document.setHtml(self.tx.toPlainText())
document.print(printer)
def printdialog(self):
printdialog = QPrintDialog(self.printer,self)
if QDialog.Accepted == printdialog.exec_():
self.tx.print(self.printer)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
下一篇:没有了
讨论数量:0