帮你自动化办公的python - 自动提取pdf指定页(ui处理篇)

概念

 

本文主要阐述在项目《自动提取pdf指定页》中对ui界面的处理方式。若对项目需求不清楚的用户,请先查看文章《帮你自动化办公的python - 自动提取pdf指定页(项目概述)》。

介绍

本项目用到处理ui界面的模块是Tkinter,它是Python 的标准GUI库。可以使用它快速的创建GUI应用程序。

另外Tkinter是内置到python的安装包中、只要安装好Python之后就能import Tkinter 库、对于简单的图形界面Tkinter 还是能应付自如

原计划本项目ui界面使用pyqt5搭建,考虑到功能比较简单单一,所以就直接使用内置Tkinter库完成ui相关的工作,毕竟杀鸡焉用牛刀嘛。

核心

1. 打开文件和目录。通过调用接口askopenfilenameaskdirectoy实现,可以通过参数initialdir指定初始目录位置,filetypes指定打开某一类文件

# 打开单个指定后缀格式文件,suffix:后缀,格式为('*.txt、*.pdf')
    # 返回:完整文件名
    def open_file(self, suffix):
        return filedialog.askopenfilename(filetypes=(('pdf files', suffix),))

    # 打开多个指定后缀格式文件,suffix:后缀,格式为('*.txt、*.pdf')
    # 返回:完整文件名列表
    def open_files(self, file, suffix):
        return filedialog.askopenfilenames(filetypes=(('pdf files', '*.pdf'),))

    # 打开目录,init:默认路径
    # 返回路径
    def open_dir(self, init, title):
        return filedialog.askdirectory(initialdir=init, title=title)

2.显示提示框。通过调用接口messagebox.showinfo实现,标题和提示内容通过参数传入指定。

    # 显示提示信息    title:标题        msg:提示内容
    def show_msg(self, title, msg):
        tkinter.messagebox.showinfo(title=title, message=msg)

3. 创建按钮和窗口。通过实例化Button和Tk对象实现,传入参数较多,包括按钮响应函数、尺寸、位置等。

    # 创建按钮    text:按钮内容   func:响应函数   width:宽   row:行坐标   col:列坐标
    def new_btn(self, text, func, width, row, col):
        return Button(text=text, command=func, width=width).grid(row=row, column=col)  # 按钮

    # 创建窗口,    title:窗口名
    # 返回:窗口对象
    def new_form(self, title):
        form = Tk()
        form.title(title)
        return form

4. 设置窗口相关属性。通过调用geometry接口实现。

 # 设置窗口宽高及位置,且宽高不可变    form:窗口对象     width:宽   height:高    x:行坐标   y:列坐标
    def set_form_size(self, form, width, height, x, y):
        alignstr = '%dx%d+%d+%d' % (width, height, x, y)
        form.geometry(alignstr)
        # 设置窗口是否可变长、宽,True:可变,False:不可变
        form.resizable(width=False, height=False)

    # 设置窗口居中显示,且宽高不可变    form:窗口对象     width:宽   height:高
    def set_form_centre(self, form, width, height):
        # 根据屏幕尺寸和窗口尺寸,计算屏幕中心位置
        max_width = form.winfo_screenwidth()
        max_height = form.winfo_screenheight()

        x = (max_width-width) / 2
        y = (max_height-height) / 2

        self.set_form_size(form, width, height, x, y)

示例

★f_tkinter对象(ui界面操作类):

属性:无

行为:打开文件/目录、创建窗口/按钮、设置窗口位置、提示框。

 f_tkinter.h

import tkinter
import tkinter.filedialog as filedialog
from tkinter import*
import tkinter.messagebox

# tkinter操作定义
class f_tkinter(object):
    def __init__(self,):
        pass

    # 打开单个指定后缀格式文件,suffix:后缀,格式为('*.txt、*.pdf')
    # 返回:完整文件名
    def open_file(self, suffix):
        return filedialog.askopenfilename(filetypes=(('pdf files', suffix),))

    # 打开多个指定后缀格式文件,suffix:后缀,格式为('*.txt、*.pdf')
    # 返回:完整文件名列表
    def open_files(self, file, suffix):
        return filedialog.askopenfilenames(filetypes=(('pdf files', '*.pdf'),))

    # 打开目录,init:默认路径
    # 返回路径
    def open_dir(self, init, title):
        return filedialog.askdirectory(initialdir=init, title=title)

    # 显示提示信息    title:标题        msg:提示内容
    def show_msg(self, title, msg):
        tkinter.messagebox.showinfo(title=title, message=msg)

    # 创建按钮    text:按钮内容   func:响应函数   width:宽   row:行坐标   col:列坐标
    def new_btn(self, text, func, width, row, col):
        return Button(text=text, command=func, width=width).grid(row=row, column=col)  # 按钮

    # 创建窗口,    title:窗口名
    # 返回:窗口对象
    def new_form(self, title):
        form = Tk()
        form.title(title)
        return form

    # 设置窗口宽高及位置,且宽高不可变    form:窗口对象     width:宽   height:高    x:行坐标   y:列坐标
    def set_form_size(self, form, width, height, x, y):
        alignstr = '%dx%d+%d+%d' % (width, height, x, y)
        form.geometry(alignstr)
        # 设置窗口是否可变长、宽,True:可变,False:不可变
        form.resizable(width=False, height=False)

    # 设置窗口居中显示,且宽高不可变    form:窗口对象     width:宽   height:高
    def set_form_centre(self, form, width, height):
        # 根据屏幕尺寸和窗口尺寸,计算屏幕中心位置
        max_width = form.winfo_screenwidth()
        max_height = form.winfo_screenheight()

        x = (max_width-width) / 2
        y = (max_height-height) / 2

        self.set_form_size(form, width, height, x, y)

往期 · 推荐

帮你自动化办公的python-自动提取pdf指定页(文件处理篇)

帮你自动化办公的python-自动提取pdf指定页(项目概述)

也没想象中那么神秘的数据结构-一种通用化的双向链表设计(底层源码)

也没想象中那么神秘的数据结构-一环扣一环的“链表”(双向链表)

我用C语言玩对象,偷偷关注着你的观察者模式(基类设计)

关注

更多精彩内容,请关注微信公众号:不只会拍照的程序猿,本人致力分享linux、设计模式、C语言、嵌入式、编程相关知识,也会抽空分享些摄影相关内容,同样也分享大量摄影、编程相关视频和源码,另外你若想要本文章源码请关注公众号:不只会拍照的程序猿,后台回复:PDF拆解源码,也可点击此处下载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不只会拍照的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值