博客
关于我
用 wxPython 打印你的 App
阅读量:358 次
发布时间:2019-03-05

本文共 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()

转载地址:http://gtsg.baihongyu.com/

你可能感兴趣的文章
LeetCode 116填充每个节点的下一个右侧结点指针
查看>>
2021-4-28【PTA】【L2-1 包装机 (25 分)】
查看>>
Arduino mega2560+MPU6050利用加速度值控制舵机
查看>>
紫书——蛇形填数
查看>>
A Guide to Node.js Logging
查看>>
webwxbatchgetcontact一个神奇的接口
查看>>
Edge浏览器:你的的内核我的芯
查看>>
【考研英语-基础-简单句】简单句的核心变化_谓语情态
查看>>
Jetson AGX Xavier硬件自启动
查看>>
统计字符数
查看>>
JS 数组的 every()、some() 、filter()、findIndex() 、find()、map()方法
查看>>
JS数据类型的判断
查看>>
实现一个简易Vue(三)Compiler
查看>>
仿小米商城(上)
查看>>
【30】kotlin 闭包
查看>>
自动安装服务2
查看>>
js的各种数据类型判断(in、hasOwnProperty)
查看>>
严格模式、混杂模式与怪异模式
查看>>
HTML 和 CSS 简单实现注册页面
查看>>
(SpringMVC)springMVC.xml 和 web.xml
查看>>