日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pyqt5 listview 不默认选中_pyqt5 商店小票打印的实现模板

發布時間:2025/3/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyqt5 listview 不默认选中_pyqt5 商店小票打印的实现模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說明

最近在用pyqt5做商店小票打印,用的是得力DL-581PW(NEW)熱敏小票打印機。

商店小票打印,屬于escpos打印。

在網上找了很多實現方法,看了很多相關文章,經歷了很多困難,最后終于實現了。

這里先分享一下我看過的文章和嘗試過的方法,最后分享我的實現套路。

一.使用execl打印

很多場景,我都是使用win32com模塊的execl打印,基本能解決大部分的打印問題。(相關的方法網上也有,可以找找,如有需要,我有時間單獨寫一篇)

但使用execl打印熱敏小票卻不行,會打出整頁空白,此路不通,只能放棄。

二. 使用QTextDocument打印

pyqt5自帶一套打印工具,也頗為好用。

商店小票,一般思路就是使用QTextDocument,對其setHtml,便能利用html進行排版打印。

這種方法網上很多,但是依然有問題,就是QTextDocument會強制左邊和頂部留白。

這里我主要參考了PyQt5中使用Qprinter打印熱敏小票一文,大家可以進去看看,非常好的文章。

三 使用ESCPOS打印

熱敏小票打印機,都是遵循escpos指令進行打印的,所以我便去找python的escpos模塊,還真有。

一個叫python-escpos,使用命令pip install python-escpos 即可安裝。
一個叫python-printer-escpos, 使用命令pip install python-printer-escpos 即可安裝。

這兩個模塊,都需要先連接打印機。但我搞了半天,也沒有連上,只能放棄。
相關文章,網上也有,自行搜索吧。

四. HTML文件轉圖片,進行打印

回到PyQt5中使用Qprinter打印熱敏小票一文,推薦了html轉圖片打印的方法,最終作者就是用這種方法實現的。

這種方法,也算解決了QTextDocument強制留白的問題。

我也嘗試了一下,但html轉圖片太過麻煩,而且打印效果不清晰,選擇放棄。

五. 使用QWebEngineView進行打印

基于PyQt5中使用Qprinter打印熱敏小票一文,繼續研究,繼續摸索,終于找了我的實現方法,直接使用QWebEngineView進行打印,簡單方便。

但有一點缺陷,就是打印效果依舊有點不清晰,后面就通過字體加粗加大來對沖解決。

【如下代碼,完全復制,直接運行,即可使用】

1import?win32print
2from?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????????????訂單號:700001001201811161631123558 39????????????下單時間:2018-10-16 16:31:14 40????????????收銀員:王小明 41???????? 42????????*************************************** 43???????? 44???????????? 45???????????????? 46???????????????????? 47???????????????????? 48????????????????????????商品名 49????????????????????????單價 50????????????????????????數量 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????????????????合?計 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??????????????微信掃碼?購好物?享服務104?????????105106????107108109110111112'''
113
114################################################
115#?打印回調函數
116def?print_completed(result):
117????pass
118
119#?開始打印小票
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)")??#設置為默認打印機
133????printer?=?QPrinter()
134????printer.setPageSizeMM(QSizeF(80,?300))
135????##########必須延遲打印,否則網頁還沒加載,打印空白#########
136????timer?=?QTimer()
137????timer.timeout.connect(goto_print_litbill)
138????timer.setSingleShot(True)
139????timer.start(500)
140????###################################################
141????sys.exit(app.exec_())

本文如有幫助,敬請留言鼓勵。
本文如有錯誤,敬請留言改進。

寫在最后1

我自己現在用的就是【五. 使用QWebEngineView】進行打印,但不代表其他方法完全不可行,大家根據自己情況自己摸索下。

當然,這種方法依舊存在打印不清晰的缺陷,如果哪位大神有更好的方法,敬請留言推薦,謝謝了。

寫在最后2

最后,鄭重感謝PyQt5中使用Qprinter打印熱敏小票的作者yuchanns。

有了他這篇文章,節省了我好多時間。本文本想收費的,嘿嘿,為感謝yuchanns,就免費分享了,希望也能節省你的時間。如果本文對你有幫助,也請去感謝他吧。

總結

以上是生活随笔為你收集整理的pyqt5 listview 不默认选中_pyqt5 商店小票打印的实现模板的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。