實戰PyQt5 080 列印輸出

2021-10-10 21:32:05 字數 3346 閱讀 9476

qt為列印提供了廣泛的跨平台支援。使用每個平台上的列印系統,qt應用程式可以列印到連線的印表機,也可以跨網路列印到遠端印表機。qt的列印系統還支援pdf檔案生成。

qt提供了一些類來支援印表機的選擇和設定以及列印輸出

在qt中,印表機由qprinter來代表,qprinter是一種繪圖裝置,可以提供特定的列印功能支援,例如支援多頁和雙面輸出。

qprinter類是在印表機上繪圖的繪圖裝置。該裝置代表一系列的列印輸出頁面,其使用方式和其他繪圖裝置(如qwidget和qpixmap)幾乎完全相同。在windows或macos上直接列印到印表機時,qprinter使用內建的印表機驅動程式。在x11上,qprinter使用通用unix列印系統(cups)將pdf輸出傳送到印表機。

注意,在無效印表機上設定紙張尺寸和解析度等引數是未定義的。

qprinter常用方法:

qprinter類繼承關係:

qpagesetupdialog類為印表機上與頁面相關的選項提供了乙個配置對話方塊。在windows和macos上,頁面設定對話方塊是使用本機頁面設定對話方塊實現的。

qpagesetupdialog類繼承關係:

qprintdialog類提供了乙個用於指定印表機配置的對話方塊。該對話方塊允許使用者更改與文件相關的設定,例如紙張尺寸和方向,列印型別(彩色或灰度),頁面範圍以及要列印的份數。它提供控制項以使使用者能夠從可用的印表機中進行選擇,包括任何已配置的網路印表機。 在windows和macos上,使用本機列印對話方塊。

qprintdialog常用方法:

qprintdialog常用訊號:

qprintdialog類繼承關係:

測試**演示了使用qtextedit載入乙個文字檔案,然後進行頁面設定,選擇印表機後,使用qtextedit.print() 函式完成列印。完整**如下:

import sys

from pyqt5 import qtcore, qtgui, qtwidgets

qtextedit, qdialog, qfiledialog, qmessagebox)

from pyqt5.qtprintsupport import qpagesetupdialog,qprintdialog, qprinter

class demoprint(qmainwindow):

def __init__(self, parent=none):

super(demoprint, self).__init__(parent)   

# 設定視窗標題

self.setwindowtitle('實戰pyqt5: 列印輸出演示')      

# 設定視窗大小

self.resize(600, 400)

self.printer = qprinter()

self.initui()

def initui(self):

#選單條

menubar = self.menubar()

menufile = menubar.addmenu('檔案')

#檔案aopen = qaction('開啟...', self)

aopen.triggered.connect(self.onfileopen)

apagesetup = qaction('頁面設定', self)

apagesetup.triggered.connect(self.onfilepagesetup)

aprint = qaction('列印', self)

aprint.triggered.connect(self.onfileprint)

aexit = qaction('退出', self)

aexit.triggered.connect(self.close)

menufile.addaction(aopen)

menufile.addaction(apagesetup)

menufile.addaction(aprint)

menufile.addseparator()

menufile.addaction(aexit)

#視窗self.texteditor = qtextedit()

#設定為中心視窗

self.setcentralwidget(self.texteditor)

def msgcritical(self, strinfo):

dlg = qmessagebox(self)

dlg.seticon(qmessagebox.critical)

dlg.settext(strinfo)

dlg.show()

def onfileopen(self):

path,_ = qfiledialog.getopenfilename(self, '開啟檔案', '', '文字檔案 (*.txt)')

if path:

try:

with open(path, 'r') as f:

text = f.read()

except exception as e:

self.msgcritical(str(e))

else:

self.path = path

self.texteditor.setplaintext(text)

def onfilepagesetup(self):

dlgpagesetup = qpagesetupdialog(self.printer, self)

dlgpagesetup.exec()

def onfileprint(self):

dlgprint = qprintdialog(self.printer, self)

if qdialog.accepted == dlgprint.exec():

self.texteditor.print(self.printer)

if __name__ == '__main__':

window = demoprint()

window.show()

執行結果如下圖:

測試列印輸出

前一篇: 實戰pyqt5: 079-如何徹底刪除布局中乙個部件

實戰PyQt5 041 選單控制項QMenu

在乙個gui應用中,選單項都是乙個隨處都會用到的乙個控制項項。在乙個應用中選單常以以下三種方式出現 qmenu常用方法有 qmenu類繼承關係 在前一篇文章中,演示了使用qmenubar為主視窗提供選單欄的方法,在本篇中,我們進一步完善主視窗選單。import sys from pyqt5 impo...

實戰PyQt5 114 顏色類QColor

qcolor類提供基於rgb hsv或cmyk值的顏色。顏色通常用rgb 紅色 綠色和藍色 分量指定,但也可以用hsv 色相 飽和度和值 和cmyk 青色 品紅 黃色和黑色 分量指定。此外,可以使用顏色名稱指定顏色 顏色名稱可以是svg 1.0的任何顏色名稱 qcolor物件是基於rgb顏色來建立的...

實戰PyQt5 004 控制項之祖QWidget

pyqt是python圖形使用者介面 graphical user inte ce,簡稱gui 應用開發中流行的圖形開發介面庫。在gui應用中,乙個典型的視窗座標系統如圖1所示 gui視窗座標示意圖 螢幕左上角為座標原點,即 0,0 點,從左到右為x軸正向,從上到下為y軸正向。整個螢幕的座標系統就用...