pyqt5 listview 不默认选中_pyqt5 商店小票打印的实现模板
說(shuō)明
最近在用pyqt5做商店小票打印,用的是得力DL-581PW(NEW)熱敏小票打印機(jī)。
商店小票打印,屬于escpos打印。
在網(wǎng)上找了很多實(shí)現(xiàn)方法,看了很多相關(guān)文章,經(jīng)歷了很多困難,最后終于實(shí)現(xiàn)了。
這里先分享一下我看過(guò)的文章和嘗試過(guò)的方法,最后分享我的實(shí)現(xiàn)套路。
一.使用execl打印
很多場(chǎng)景,我都是使用win32com模塊的execl打印,基本能解決大部分的打印問(wèn)題。(相關(guān)的方法網(wǎng)上也有,可以找找,如有需要,我有時(shí)間單獨(dú)寫(xiě)一篇)
但使用execl打印熱敏小票卻不行,會(huì)打出整頁(yè)空白,此路不通,只能放棄。
二. 使用QTextDocument打印
pyqt5自帶一套打印工具,也頗為好用。
商店小票,一般思路就是使用QTextDocument,對(duì)其setHtml,便能利用html進(jìn)行排版打印。
這種方法網(wǎng)上很多,但是依然有問(wèn)題,就是QTextDocument會(huì)強(qiáng)制左邊和頂部留白。
這里我主要參考了PyQt5中使用Qprinter打印熱敏小票一文,大家可以進(jìn)去看看,非常好的文章。
三 使用ESCPOS打印
熱敏小票打印機(jī),都是遵循escpos指令進(jìn)行打印的,所以我便去找python的escpos模塊,還真有。
一個(gè)叫python-escpos,使用命令pip install python-escpos 即可安裝。
一個(gè)叫python-printer-escpos, 使用命令pip install python-printer-escpos 即可安裝。
這兩個(gè)模塊,都需要先連接打印機(jī)。但我搞了半天,也沒(méi)有連上,只能放棄。
相關(guān)文章,網(wǎng)上也有,自行搜索吧。
四. HTML文件轉(zhuǎn)圖片,進(jìn)行打印
回到PyQt5中使用Qprinter打印熱敏小票一文,推薦了html轉(zhuǎn)圖片打印的方法,最終作者就是用這種方法實(shí)現(xiàn)的。
這種方法,也算解決了QTextDocument強(qiáng)制留白的問(wèn)題。
我也嘗試了一下,但html轉(zhuǎn)圖片太過(guò)麻煩,而且打印效果不清晰,選擇放棄。
五. 使用QWebEngineView進(jìn)行打印
基于PyQt5中使用Qprinter打印熱敏小票一文,繼續(xù)研究,繼續(xù)摸索,終于找了我的實(shí)現(xiàn)方法,直接使用QWebEngineView進(jìn)行打印,簡(jiǎn)單方便。
但有一點(diǎn)缺陷,就是打印效果依舊有點(diǎn)不清晰,后面就通過(guò)字體加粗加大來(lái)對(duì)沖解決。
【如下代碼,完全復(fù)制,直接運(yùn)行,即可使用】
1import?win32print2from?PyQt5.QtWidgets?import?QApplication,?QDialog
3from?PyQt5.QtCore?import?QObject,?pyqtSlot,?QUrl,?QSizeF,?QMarginsF,?QTimer
4from?PyQt5.QtWebEngineWidgets?import?QWebEngineView
5from?PyQt5.QtPrintSupport?import?QPrinter
6import?sys
7
8
9################################################
10the_html=''' 11 12html> 13 14 15???? 16????使用PyQt5打印熱敏小票 17 18????*?{padding:0;margin:?0;font-weight:bold;face="KaiTi"}
20????h1?{font-size:?1em}
21????h3?{text-align:?center;font-size:?2em}
22????.left?{float:?left;}
23????.right?{float:right;}
24????.clearfix?{clear:?both;}
25????.print_container?{width:?180px;}
26????.section2?label?{font-size:?1em;display:?block}
27????.section3?label?{font-size:?1em;display:?block}
28????.section4?.total?label?{font-size:?1em;display:?block}
29????.section4?{text-align:?center;font-size:?1em;border-bottom:?1em?solid?#DADADA}
30????.section5?label?{text-align:?center;font-size:?1em;display:?block}
31 32 33 34???? 35????????
一心獅便利店
36????????*************************************** 37???????? 38????????????訂單號(hào):700001001201811161631123558 39????????????下單時(shí)間:2018-10-16 16:31:14 40????????????收銀員:王小明 41???????? 42????????*************************************** 43???????? 44???????????? 45???????????????? 46???????????????????? 47???????????????????? 48????????????????????????商品名 49????????????????????????單價(jià) 50????????????????????????數(shù)量 51 52???????????????????? 53???????????????????? 54???????????????????? 55???????????????????? 56????????????????????????今麥郎1 57????????????????????????100 58????????????????????????10000.00 59???????????????????? 60???????????????????? 61????????????????????????今麥郎2 62????????????????????????1 63????????????????????????100.00 64???????????????????? 65???????????????????? 66????????????????????????今麥郎3 67????????????????????????1 68????????????????????????100.00 69???????????????????? 70???????????????????? 71???????????????? 72???????????? 73???????????? 74????????????????合?計(jì) 75????????????????100.00 76???????????????? 77????????????????收款金額 78????????????????100 79???????????????? 80????????????????找零金額 81????????????????0.00 82???????????????? 83???????????? 84???????????? 85????????????????顧客已付款 86???????????? 87????????????*************************************** 88???????? 89???????? 90????????????電話: 91???????? 92????????*************************************** 93???????? 94????????????歡迎光臨,謝謝惠顧! 95????????????一心獅便利店 96 97???????? 98???????? 99??????????????100??????????????101??????????????102??????????????103??????????????微信掃碼?購(gòu)好物?享服務(wù)104?????????105106????107108109110111112'''113
114################################################
115#?打印回調(diào)函數(shù)
116def?print_completed(result):
117????pass
118
119#?開(kāi)始打印小票
120def?goto_print_litbill():
121????webview.page().print(printer,?print_completed)
122
123
124################################################
125#######程序入口
126################################################
127if??__name__?==?'__main__':
128????app?=?QApplication(sys.argv)
129????webview?=?QWebEngineView()
130????webview.setHtml(the_html)
131????#webview.show()
132????win32print.SetDefaultPrinter("DL-581PW(NEW)")??#設(shè)置為默認(rèn)打印機(jī)
133????printer?=?QPrinter()
134????printer.setPageSizeMM(QSizeF(80,?300))
135????##########必須延遲打印,否則網(wǎng)頁(yè)還沒(méi)加載,打印空白#########
136????timer?=?QTimer()
137????timer.timeout.connect(goto_print_litbill)
138????timer.setSingleShot(True)
139????timer.start(500)
140????###################################################
141????sys.exit(app.exec_())
本文如有幫助,敬請(qǐng)留言鼓勵(lì)。
本文如有錯(cuò)誤,敬請(qǐng)留言改進(jìn)。
寫(xiě)在最后1
我自己現(xiàn)在用的就是【五. 使用QWebEngineView】進(jìn)行打印,但不代表其他方法完全不可行,大家根據(jù)自己情況自己摸索下。
當(dāng)然,這種方法依舊存在打印不清晰的缺陷,如果哪位大神有更好的方法,敬請(qǐng)留言推薦,謝謝了。
寫(xiě)在最后2
最后,鄭重感謝PyQt5中使用Qprinter打印熱敏小票的作者yuchanns。
有了他這篇文章,節(jié)省了我好多時(shí)間。本文本想收費(fèi)的,嘿嘿,為感謝yuchanns,就免費(fèi)分享了,希望也能節(jié)省你的時(shí)間。如果本文對(duì)你有幫助,也請(qǐng)去感謝他吧。
總結(jié)
以上是生活随笔為你收集整理的pyqt5 listview 不默认选中_pyqt5 商店小票打印的实现模板的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python教学视频k_GitHub -
- 下一篇: 一样入职的应届生工资不一样_天天向上汪涵