Py学习  »  Python

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

Joe • 3 年前 • 1452 次点击  

我有一个函数检查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")
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130749
 
1452 次点击  
文章 [ 1 ]  |  最新文章 3 年前
acw1668
Reply   •   1 楼
acw1668    4 年前

如果你查看 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()