
用 wxPython 打印你的 App
发布日期:2021-05-08 01:20:55
浏览次数:8
分类:原创文章
本文共 3811 字,大约阅读时间需要 12 分钟。
参考文献《wxPython Cookbook》 Micheal Driscoll
效果:
代码
# -*- coding: utf-8 -*-"""Created on Thu Jul 9 12:27:03 2020@author: Administrator"""import sysimport wximport snapshotPrinterclass MainFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,title='Screenshot Tutorial') panel = wx.Panel(self) screenshotBtn = wx.Button(panel,label='Take Screenshot') screenshotBtn.Bind(wx.EVT_BUTTON,self.onScreenshot) printBtn = wx.Button(panel,label='Print Screenshot') printBtn.Bind(wx.EVT_BUTTON,self.onPrint) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(screenshotBtn,0,wx.ALL|wx.CENTER,5) #此时5是高度间距 sizer.Add(printBtn,0,wx.ALL|wx.CENTER,5) panel.SetSizer(sizer) def onScreenshot(self,event): print('Taking screenshot...') rect = self.GetRect() dcScreen = wx.ScreenDC() bmp = wx.EmptyBitmap(rect.width,rect.height) memDC = wx.MemoryDC() memDC.SelectObject(bmp) memDC.Blit(0, 0, rect.width, rect.height, dcScreen, rect.x, rect.y) memDC.SelectObject(wx.NullBitmap) img = bmp.ConvertToImage() fileName = 'myImage.png' img.SaveFile(fileName,wx.BITMAP_TYPE_PNG) print('...saving as png!') def onPrint(self,event): printer = snapshotPrinter.SnapshotPrinter() printer.sendToPrinter() if __name__ == "__main__": app = wx.App(False) frame = MainFrame() frame.Show() app.MainLoop()
snapshotPrinter.py:
# -*- coding: utf-8 -*-"""Created on Thu Jul 9 12:51:49 2020@author: Administrator"""import osimport wxfrom wx.html import HtmlEasyPrinting, HtmlWindowclass SnapshotPrinter(wx.Frame): def __init__(self,title='Snapshot Printer'): wx.Frame.__init__(self,None,title=title,size=(650,400)) self.panel = wx.Panel(self) self.printer = HtmlEasyPrinting(name='Printing', parentWindow=None) self.html = HtmlWindow(self.panel) self.html.SetRelatedFrame(self,self.GetTitle()) if not os.path.exists('screenshot.htm'): self.createHtml() self.html.LoadPage('screenshot.htm') pageSetupBtn = wx.Button(self.panel,label='Page Setup') printBtn = wx.Button(self.panel,label='Print') cancelBtn = wx.Button(self.panel,label='Cancel') pageSetupBtn.Bind(wx.EVT_BUTTON,self.onSetup) printBtn.Bind(wx.EVT_BUTTON,self.onPrint) cancelBtn.Bind(wx.EVT_BUTTON,self.onCancel) sizer = wx.BoxSizer(wx.VERTICAL) btnSizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(self.html,1,wx.GROW) btnSizer.Add(pageSetupBtn,0,wx.ALL,5) btnSizer.Add(printBtn,0,wx.ALL,5) btnSizer.Add(cancelBtn,0,wx.ALL,5) sizer.Add(btnSizer) self.panel.SetSizer(sizer) self.panel.SetAutoLayout(True) def createHtml(self): print('creating html ...') html = '''<html>\n<body>\n<center> <img src=myImage.png width=516,height=314> </center>\n</body>\n</html> ''' with open('screenshot.htm','w') as fobj: fobj.write(html) def onSetup(self,event): self.printer.PageSetup() def onPrint(self,event): self.sendToPrinter() def sendToPrinter(self): self.printer.GetPrintData().SetPaperId(wx.PAPER_LETTER) self.printer.PrintFile(self.html.GetOpenedPage()) def onCancel(self,event): self.Close() if __name__ == '__main__': app = wx.App(False) frame = SnapshotPrinter() frame.Show() app.MainLoop()
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月18日 07时00分43秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
pythonBug入门——从零开始学python
2019-03-04
js-禁止右键菜单代码、禁止复制粘贴代码
2019-03-04
SpringBoot中使用Mybatis访问MySQL数据库(使用xml方式)
2019-03-04
数组--Go语言学习笔记
2019-03-04
Redis (三)——Linux 上安装 Redis
2019-03-04
java 重写(override)和重载(overload)区别
2019-03-04
java 多态类型转换
2019-03-04
常用正则表达式
2019-03-04
XML:采用XHTML和CSS设计可重用可换肤的WEB站点
2019-03-04
Tomcat6中web项目部署路径webapps和wtpwebapps的区别
2019-03-04
Java判断字符串是否为金额
2019-03-04
软件架构-zookeeper快速入门
2019-03-04
angr学习笔记(7)(malloc地址单元符号化)
2019-03-04
「CF149D」括号涂色 区间DP好题
2019-03-04
树状数组 模板总结
2019-03-04
「NOI2015」程序自动分析 并查集题解
2019-03-04
[JSOI2008]Blue Mary的战役地图 Hash题解
2019-03-04
结构型设计在工作中的一些经验总结
2019-03-04
如何提升员工体验 助力企业业务增长?这个棘手的问题终于被解决了!
2019-03-04
2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态
2019-03-04