Python Qt GUI設(shè)計(jì):QPrinter打印圖片類(基礎(chǔ)篇—21)

打印圖像是圖像處理軟件中的一個(gè)常用功能,打印圖像實(shí)際上是在QPaintDevice中畫圖疫衩,與平常在QWidget邑商、QPixmap和Qlmage中畫圖一樣,都是創(chuàng)建一個(gè)QPainter對(duì)象進(jìn)行畫圖的殃姓,只是打印使用的是QPrinter,它本質(zhì)上也是一個(gè)QPaintDevice(繪圖設(shè)備)瓦阐。

通過一個(gè)示例了解QPrinter打印圖片類的使用蜗侈,實(shí)現(xiàn)代碼如下所示:

from PyQt5.QtCore import Qt

from PyQt5.QtGui import QImage , QIcon, QPixmap

from PyQt5.QtWidgets import QApplication? , QMainWindow, QLabel,? QSizePolicy , QAction

from PyQt5.QtPrintSupport import QPrinter, QPrintDialog

import sys?

class MainWindow(QMainWindow):?

def __init__(self,parent=None):?

super(MainWindow,self).__init__(parent)?

self.setWindowTitle(self.tr("打印圖片"))?

? ? ? # 創(chuàng)建一個(gè)放置圖像的QLabel對(duì)象imageLabel,并將該QLabel對(duì)象設(shè)置為中心窗體睡蟋。

self.imageLabel=QLabel()?

self.imageLabel.setSizePolicy(QSizePolicy.Ignored,QSizePolicy.Ignored)?

self.setCentralWidget(self.imageLabel)?

self.image=QImage()?

? ? ? # 創(chuàng)建菜單踏幻,工具條等部件

self.createActions()?

self.createMenus()?

self.createToolBars()?

? ? ? # 在imageLabel對(duì)象中放置圖像

if self.image.load("./2.jpg"):?

self.imageLabel.setPixmap(QPixmap.fromImage(self.image))?

self.resize(self.image.width(),self.image.height())?

def createActions(self):?

self.PrintAction=QAction(QIcon("./2.jpg"),self.tr("打印"),self)?

self.PrintAction.setShortcut("Ctrl+P")?

self.PrintAction.setStatusTip(self.tr("打印"))?

self.PrintAction.triggered.connect(self.slotPrint)

def createMenus(self):?

PrintMenu=self.menuBar().addMenu(self.tr("打印"))?

PrintMenu.addAction(self.PrintAction)?

def createToolBars(self):?

fileToolBar=self.addToolBar("Print")?

fileToolBar.addAction(self.PrintAction)?

def slotPrint(self):?

? ? ? # 新建一個(gè)QPrinter對(duì)象

printer=QPrinter()?

? ? ? # 創(chuàng)建一個(gè)QPrintDialog對(duì)象,參數(shù)為QPrinter對(duì)象

printDialog=QPrintDialog(printer,self)?

'''

? ? ? 判斷打印對(duì)話框顯示后用戶是否單擊“打印”按鈕戳杀,若單擊“打印”按鈕该面,

? ? ? 則相關(guān)打印屬性可以通過創(chuàng)建QPrintDialog對(duì)象時(shí)使用的QPrinter對(duì)象獲得,

? ? ? 若用戶單擊“取消”按鈕信卡,則不執(zhí)行后續(xù)的打印操作隔缀。

'''

if printDialog.exec_():?

? ? ? ? ? # 創(chuàng)建一個(gè)QPainter對(duì)象,并指定繪圖設(shè)備為一個(gè)QPrinter對(duì)象傍菇。

painter=QPainter(printer)?

# 獲得QPainter對(duì)象的視口矩形

rect=painter.viewport()?

# 獲得圖像的大小

size=self.image.size()?

# 按照?qǐng)D形的比例大小重新設(shè)置視口矩形

size.scale(rect.size(),Qt.KeepAspectRatio)?

painter.setViewport(rect.x(),rect.y(),size.width(),size.height())?

# 設(shè)置QPainter窗口大小為圖像的大小

painter.setWindow(self.image.rect())

# 打印

painter.drawImage(0,0,self.image)?

if __name__ == "__main__":? ? ? ? ? ? ? ? ? ?

app=QApplication(sys.argv)?

main=MainWindow()?

main.show()?

sys.exit(app.exec_())

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末猾瘸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌牵触,老刑警劉巖淮悼,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異揽思,居然都是意外死亡袜腥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門钉汗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞧挤,“玉大人,你說我怎么就攤上這事儡湾√靥瘢” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵徐钠,是天一觀的道長(zhǎng)癌刽。 經(jīng)常有香客問我,道長(zhǎng)尝丐,這世上最難降的妖魔是什么显拜? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮爹袁,結(jié)果婚禮上远荠,老公的妹妹穿的比我還像新娘。我一直安慰自己失息,他們只是感情好譬淳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盹兢,像睡著了一般邻梆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绎秒,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天浦妄,我揣著相機(jī)與錄音,去河邊找鬼见芹。 笑死剂娄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的玄呛。 我是一名探鬼主播阅懦,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼把鉴!你這毒婦竟也來了故黑?” 一聲冷哼從身側(cè)響起儿咱,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎场晶,沒想到半個(gè)月后混埠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诗轻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年钳宪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扳炬。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吏颖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出恨樟,到底是詐尸還是另有隱情半醉,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布劝术,位于F島的核電站缩多,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏养晋。R本人自食惡果不足惜衬吆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绳泉。 院中可真熱鬧逊抡,春花似錦、人聲如沸零酪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蛾娶。三九已至灯谣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛔琅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工峻呛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罗售,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓钩述,卻偏偏與公主長(zhǎng)得像寨躁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子牙勘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容