IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> tkinter文本框小功能(5):长截图 -> 正文阅读

[Python知识库]tkinter文本框小功能(5):长截图

tkinter文本框小功能(5):长截图

引言

这篇文章实际上来自于tkinter文本框转录为PDF

因为单纯录为pdf会出现分页导致一些文本断裂的情况,毕竟这个在tkinter中是无解的,所以我们可以选择长截图。

经过测试,即使使用长截图,也会存在部分文字无法正常显示,但这个概率很小。


依赖

需要使用到PIL,请自行安装。


与之前的PDF同逻辑

在这篇文章里,实际上就是对当时转录为pdf的函数做了一个小调整:

class Text2Image:
    '''将tkinter文本组件内容长截图为png图片'''

    def __init__(self,text_widget,master):
        #text_widget::tkinter的文本框组件
        #master::tkinter文本框所在的窗口
        self.text=text_widget
        self.master=master
        self.retop=self.master.attributes('-topmost')
        self.textstyle=self.text['relief']
        self.bd=self.text['borderwidth']
        print(self.bd)

    def img(self,pdfname='textpng',path=''):
        #pdfname::pdf文件名称
        #path::生成的pdf路径,默认当前目录
        self.text.yview('moveto',0.0)
        self.text.update()
        _,ys,_,ye=self.text.bbox(1.0)
        chh=ye-ys#获取单字符高度
        startx=self.text.winfo_rootx()
        starty=self.text.winfo_rooty()
        width=self.text.winfo_width()
        height=self.text.winfo_height()
        #填充最后一页字符
        num=height//chh+1
        self.text.insert('end','\n'*num)
        #开始截屏
        ctypes.windll.shcore.SetProcessDpiAwareness(2)
        endx=startx+width
        endy=starty+height
        self.master.attributes('-topmost',1)
        self.text['relief']='flat'
        self.text['borderwidth']=0
        imgs=[]
        all_height=0
        while True:
            img=ImageGrab.grab((startx,starty,endx,endy))
            imgs.append(img)
            if self.text.yview()[1]>=1:
                break
            self.text.yview("scroll",height,'pixels')
            self.text.update()
            all_height+=height
        newimg=Image.new('RGB',(width,all_height),255)
        x=y=0#拼接起始点
        for img in imgs:
            newimg.paste(img,(x,y)) 
            y+=height
        newimg.save(path+pdfname+'.png',resolution=100.0)
        self.master.attributes('-topmost',int(self.retop))
        self.text['relief']=self.textstyle
        self.text['borderwidth']=self.bd

唯一的一个新增点就是在录制时,将文本框的边框改为0宽度。

效果

录制效果和pdf一样。下面是成果:
在这里插入图片描述


结语

毕竟因为前面那一篇文章的积淀,因此这里只将其作为一个小功能。完整逻辑参考本文开头的那一篇文章。

?tkinter创新?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:36:21  更:2022-05-09 12:37:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 17:45:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计