Не получается увеличить по умолчанию размер текста при печати из формы
Подскажите пожалуйста, как можно при печати документа увеличить размер текста на листе, а то он и на превью и при печати всегда получается очень маленький. Как увеличить размер по умолчанию, я не понимаю.
В данном примере, если вы нажмете на File -> Print Preview увидите текст в углу, надо увеличить его размер.
Какие есть другие способы, подскажите, что обычно используется.
from PyQt5 import QtGui
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtPrintSupport import QPrintDialog, QPrinter, QPrintPreviewDialog
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, \
QTextEdit, QFontDialog, QColorDialog
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.title = "PyQt5 QToolbar"
self.top = 200
self.left = 500
self.width = 680
self.height = 480
self.setWindowIcon(QtGui.QIcon("icon.png"))
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.createEditor()
self.CreateMenu()
self.show()
def CreateMenu(self):
mainMenu = self.menuBar()
fileMenu = mainMenu.addMenu('File')
editMenu = mainMenu.addMenu('Edit')
helpMenu = mainMenu.addMenu('Help')
printAction = QAction(QIcon("print.png"), "Print", self)
printAction.triggered.connect(self.printDialog)
fileMenu.addAction(printAction)
printPreviewAction = QAction(QIcon("printprev.png"), "Print Preview", self)
printPreviewAction.triggered.connect(self.printpreviewDialog)
fileMenu.addAction(printPreviewAction)
exiteAction = QAction(QIcon("exit.png"), 'Exit', self)
exiteAction.setShortcut("Ctrl+E")
exiteAction.triggered.connect(self.exitWindow)
fileMenu.addAction(exiteAction)
copyAction = QAction(QIcon("copy.png"), 'Copy', self)
copyAction.setShortcut("Ctrl+C")
editMenu.addAction(copyAction)
saveAction = QAction(QIcon("Save.png"), 'Save', self)
saveAction.setShortcut("Ctrl+S")
editMenu.addAction(saveAction)
pasteAction = QAction(QIcon("Paste.png"), 'Paste', self)
pasteAction.setShortcut("Ctrl+P")
editMenu.addAction(pasteAction)
fontAction = QAction(QIcon("font.png"), "Font", self)
fontAction.setShortcut("Ctrl+F")
colorAction = QAction(QIcon("color.png"), "Color", self)
self.toolbar = self.addToolBar('Toolbar')
self.toolbar.addAction(copyAction)
self.toolbar.addAction(saveAction)
self.toolbar.addAction(pasteAction)
self.toolbar.addAction(exiteAction)
self.toolbar.addAction(fontAction)
self.toolbar.addAction(colorAction)
self.toolbar.addAction(printAction)
self.toolbar.addAction(printPreviewAction)
def exitWindow(self):
self.close()
def createEditor(self):
self.textEdit = QTextEdit(self)
self.setCentralWidget(self.textEdit)
def fontDialog(self):
font, ok = QFontDialog.getFont()
if ok:
self.textEdit.setFont(font)
def colorDialog(self):
color = QColorDialog.getColor()
self.textEdit.setTextColor(color)
def printDialog(self):
printer = QPrinter(QPrinter.HighResolution)
dialog = QPrintDialog(printer, self)
if dialog.exec_() == QPrintDialog.Accepted:
self.textEdit.print_(printer)
def printpreviewDialog(self):
printer = QPrinter(QPrinter.HighResolution)
previewDialog = QPrintPreviewDialog(printer, self)
previewDialog.paintRequested.connect(self.printPreview)
previewDialog.exec_()
def printPreview(self, printer):
self.textEdit.print_(printer)
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec())
Пример взят отсюда: https://codeloop.org/pyqt5-creating-print-preview-dialog-qprintpreviewdialog/
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import sys
from PyQt5 import QtGui
from PyQt5.QtGui import QIcon, QTextDocument, QTextCursor, QFont
from PyQt5.QtPrintSupport import QPrintDialog, QPrinter, QPrintPreviewDialog
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, \
QTextEdit, QFontDialog, QColorDialog
from PyQt5.QtCore import QSize, QSizeF
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
class TextEditView(QTextEdit):
dpi = 72
doc_width = 8.5 * dpi
doc_height = 6 * dpi
font = QFont('Arial', 18) # !!! попробуйте другие шрифты и размеры
def __init__(self):
super().__init__(readOnly=True)
self.setFixedSize(QSize(self.doc_width, self.doc_height))
def build_document(self, data):
document = QTextDocument()
self.setDocument(document)
document.setPageSize(QSizeF(self.doc_width, self.doc_height))
document.setDefaultFont(self.font)
cursor = QTextCursor(document)
cursor.insertText(f"{data}\n")
return document
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowIcon(QtGui.QIcon("im.png"))
self.setWindowTitle("PyQt5 QToolbar")
self.resize(680, 480)
self.createEditor()
self.createMenu()
self.textEditView = TextEditView() # +++
def createMenu(self):
mainMenu = self.menuBar()
fileMenu = mainMenu.addMenu('File')
editMenu = mainMenu.addMenu('Edit')
helpMenu = mainMenu.addMenu('Help')
printAction = QAction(QIcon("print.png"), "Print", self)
printAction.triggered.connect(self.printDialog)
fileMenu.addAction(printAction)
# printPreviewAction
printPreviewAction = QAction(QIcon("printprev.png"), "Print Preview", self)
printPreviewAction.triggered.connect(self.printpreviewDialog)
fileMenu.addAction(printPreviewAction)
exiteAction = QAction(QIcon("exit.png"), 'Exit', self)
exiteAction.setShortcut("Ctrl+E")
exiteAction.triggered.connect(self.exitWindow)
fileMenu.addAction(exiteAction)
copyAction = QAction(QIcon("copy.png"), 'Copy', self)
copyAction.setShortcut("Ctrl+C")
editMenu.addAction(copyAction)
saveAction = QAction(QIcon("Save.png"), 'Save', self)
saveAction.setShortcut("Ctrl+S")
editMenu.addAction(saveAction)
pasteAction = QAction(QIcon("Paste.png"), 'Paste', self)
pasteAction.setShortcut("Ctrl+P")
editMenu.addAction(pasteAction)
fontAction = QAction(QIcon("font.png"), "Font", self)
fontAction.setShortcut("Ctrl+F")
colorAction = QAction(QIcon("color.png"), "Color", self)
self.toolbar = self.addToolBar('Toolbar')
self.toolbar.addAction(copyAction)
self.toolbar.addAction(saveAction)
self.toolbar.addAction(pasteAction)
self.toolbar.addAction(exiteAction)
self.toolbar.addAction(fontAction)
self.toolbar.addAction(colorAction)
self.toolbar.addAction(printAction)
self.toolbar.addAction(printPreviewAction)
def exitWindow(self):
self.close()
def createEditor(self):
self.textEdit = QTextEdit(self)
self.setCentralWidget(self.textEdit)
def fontDialog(self):
font, ok = QFontDialog.getFont()
if ok:
self.textEdit.setFont(font)
def colorDialog(self):
color = QColorDialog.getColor()
self.textEdit.setTextColor(color)
def printDialog(self):
printer = QPrinter(QPrinter.HighResolution)
dialog = QPrintDialog(printer, self)
if dialog.exec_() == QPrintDialog.Accepted:
self.textEdit.print_(printer)
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
def printpreviewDialog(self):
previewDialog = QPrintPreviewDialog()
previewDialog.paintRequested.connect(self.printPreview)
previewDialog.exec_()
def printPreview(self, printer):
data = self.textEdit.toPlainText() # !!!
document = self.textEditView.build_document(data) # !!!
document.print_(printer)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())

