wxPython之解决闪烁的问题

 更新时间:2018年01月15日 14:57:36   作者:阿Bin先生  
下面小编就为大家分享一篇wxPython之解决闪烁的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

利用Python生成PDF文件时,对比了fpdf和reportlab两个库。fpdf最新更新还是2015年,

另外reportlab的资料网上更多一些。所以选择使用reportlab。

pdfgen

pdfgen包是生成PDF文档最底层的接口。一个pdfgen编程实质是一系列将一个文档绘制到连续页面上的操作指南。提供绘制操作的接口对象是pdfgen canvas。

canvas应该被认为一张白纸,上面的点用笛卡尔坐标来标记。默认页面的左下角为原点(0,0),此外x轴向右,y轴向上。

示意图如下:   

绘制文本

首先演示一个绘制”hello world!”的PDF文件。

#引入所需要的基本包
from reportlab.pdfgen import canvas
#设置绘画开始的位置
def hello(c):
 c.drawString(100, 100, "hello world!")
#定义要生成的pdf的名称
c=canvas.Canvas("hello.pdf")
#调用函数进行绘画,并将canvas对象作为参数传递
hello(c)
#showPage函数:保存当前页的canvas
c.showPage()
#save函数:保存文件并关闭canvas
c.save()

运行结果:

canvas.Canvas构造函数

def __init__(self,filename,
   pagesize=(595.27,841.89),
   bottomup = 1,
   pageCompression=0,
   encoding=rl_config.defaultEncoding,
   verbosity=0
   encrypt=None):

其中:

filename:PDF文件名

pagesize:两个数字的元组。canvas页面大小默认是A4(国际标准纸张大小),A4不同于美国标准纸张大小letter。大多数纸张大小在reportlab.lib.pagesizes。例如:

from reportlab.lib.pagesizes import letter, A4
myCanvas = Canvas('myfile.pdf', pagesize=letter)
width, height = letter #keep for later

bottomup :目前是废弃的

pageCompression:决定每页PDF操作流是否被压缩。默认设为0,不压缩。因为压缩会减慢文件生成过程。如果每页有大量文本和矢量图形,设置pageCompression = 1来压缩节省空间。

encoding:决定字体编码,默认值就很好了。

verbosity:决定多长信息被打印。

encrypted:决定PDF文档是否加密。

添加字体

下面演示如何添加字体。首先下载微软雅黑字体。

from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont 
pdfmetrics.registerFont(TTFont('msyh', 'Msyh.ttf')) 

解决绘制中文文本问题?只要注册的字体本身支持中文,就能绘制。canvas默认的字体是不支持中文的。

#引入所需要的基本包
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont 
pdfmetrics.registerFont(TTFont('msyh', 'Msyh.ttf')) 
#设置绘画开始的位置
def hello(c):
 c.drawString(100, 100, "您好")
#定义要生成的pdf的名称
c=canvas.Canvas("hello.pdf")
#设置字体
c.setFont("msyh", 8)
#调用函数进行绘画,并将canvas对象作为参数传递
hello(c)
#showPage函数:保存当前页的canvas
c.showPage()
#save函数:保存文件并关闭canvas
c.save()

运行结果:

获取文本宽度

利用canvas的stringWidth方法获取文本宽度。

#引入所需要的基本包
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont 
pdfmetrics.registerFont(TTFont('msyh', 'Msyh.ttf')) 
#设置绘画开始的位置
def hello(c):
 c.drawString(100, 100, "您好")
 width = c.stringWidth("您好")
 c.drawString(100, 120, "文本宽度:%f"%width)
#定义要生成的pdf的名称
c=canvas.Canvas("hello.pdf")
#设置字体
c.setFont("msyh", 8)
#调用函数进行绘画,并将canvas对象作为参数传递
hello(c)
#showPage函数:保存当前页的canvas
c.showPage()
#save函数:保存文件并关闭canvas
c.save()

运行结果:

以上这篇wxPython之解决闪烁的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python 网易易盾滑块验证功能的实现

    Python 网易易盾滑块验证功能的实现

    这篇文章主要介绍了Python 网易易盾滑块验证,主要是借助之前写阿里云盾滑块和极验滑块的经验写的本文,通过使用selenium请求url,并触发滑块验证,需要的朋友可以参考下
    2022-05-05
  • python实现linux下使用xcopy的方法

    python实现linux下使用xcopy的方法

    这篇文章主要介绍了python实现linux下使用xcopy的方法,可实现模仿windows下的xcopy命令功能,需要的朋友可以参考下
    2015-06-06
  • Python龙贝格法求积分实例

    Python龙贝格法求积分实例

    今天小编就为大家分享一篇Python龙贝格法求积分实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • AI与Python计算机视觉教程

    AI与Python计算机视觉教程

    这篇文章主要为大家介绍了AI与Python计算机视觉教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python判断链表是否有环的实例代码

    python判断链表是否有环的实例代码

    在本篇文章里小编给大家整理的是关于python判断链表是否有环的知识点及实例代码,需要的朋友们参考下。
    2020-01-01
  • Python win32com 操作Exce的l简单方法(必看)

    Python win32com 操作Exce的l简单方法(必看)

    下面小编就为大家带来一篇Python win32com 操作Exce的l简单方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Python模拟百度自动输入搜索功能的实例

    Python模拟百度自动输入搜索功能的实例

    今天小编就为大家分享一篇Python模拟百度自动输入搜索功能的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python远程登录代码

    python远程登录代码

    因为 python 已内建了一个 pop3 的函式库,所以我们直接用它来完成邮件的下载和处理。事实上, 如果我们不用 poplib 的话,我们还是可以完成那个例子中的所有作业:就是通过模拟 telnet的协定。
    2008-04-04
  • Django实现学员管理系统

    Django实现学员管理系统

    这篇文章主要为大家详细介绍了Django实现学员管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 详解Python requests模块

    详解Python requests模块

    今天给大家带来的是关于Python的相关知识,文章围绕着Python requests模块展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06

最新评论