使用python tkinter在单独的窗口中显示pdf

2024-09-29 23:25:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数检查tkinter listbox元素是否是pdf文件。如果是,则应在新窗口中通过“ShowPdf”显示。我只想查看我选择的pdf文件

使用该函数一次就可以了。但是,如果我切换到另一个listbox元素并再次运行该函数,则第一次运行和第二次运行的pdf将排列在后面。因此,我首先看到第一次运行的pdf,然后是第二次运行的pdf。如果我第三次运行它,那么所有三个PDF都排列在后面,等等

你能帮我只显示当前的pdf吗

import tkinter as tk
from tkPDFViewer import tkPDFViewer as pdf

def OnEntryLeft(event):
    cur_file=listb.get(listb.curselection())
    if (cur_file[-4:]==".pdf" or cur_file[-4:]==".PDF"):
        newWindow = tk.Toplevel(root)
        pdf.ShowPdf().pdf_view(newWindow,pdf_location=cur_file,width=75,height=100).pack()
    else:
        messagebox.showinfo("PDF-Check", "NO pdf")

Tags: 文件函数import元素pdftkinterastk
1条回答
网友
1楼 · 发布于 2024-09-29 23:25:53

如果查看tkPDFViwer的源代码,您会注意到ShowPdf使用类变量img_object_li(键入list)存储从PDF文件加载的页面。因此ShowPdf.img_object_li将保存来自ShowPdf实例的所有页面。我认为这是一个设计缺陷

您需要在加载PDF文件之前清除列表:

pdf.ShowPdf.img_object_li.clear() # clear loaded pages
pdf.ShowPdf().pdf_view(newWindow,pdf_location=cur_file,width=75,height=100).pack()

相关问题 更多 >

    热门问题