博客
关于我
用 wxPython 打印你的 App
阅读量:359 次
发布时间: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/

你可能感兴趣的文章
Linux杂谈之终端快捷键
查看>>
vimscript学习笔记(二)预备知识
查看>>
vimscript学习笔记(三)信息打印
查看>>
awk杂谈之数组习题
查看>>
SSM项目中遇到Could not autowire. No beans of ‘XXX‘ type found.错误
查看>>
Linux网络属性配置详解
查看>>
Python(三十)类的理解
查看>>
Extjs布局详解
查看>>
Android数据库
查看>>
C语言之指针再涉(二)
查看>>
Linux基础命令(十四)软件安装的后续
查看>>
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
查看>>
keil左侧文件调整方法
查看>>
本地分支关联远程分支
查看>>
STM8 GPIO模式
查看>>
python多态和封装
查看>>
STM32boot启动
查看>>
回调函数(callback function)
查看>>
omnet++
查看>>
23种设计模式一:单例模式
查看>>