首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python tkinter在sepearate窗口中显示pdf

使用python tkinter在sepearate窗口中显示pdf
EN

Stack Overflow用户
提问于 2021-08-21 20:18:49
回答 1查看 258关注 0票数 1

我有一个检查tkinter列表框元素是否是pdf文件的函数。如果是这样的话,应该会在新窗口中通过"ShowPdf“显示。我只想查看我选择的一个pdf。

使用该函数一次就可以很好地工作。但是,如果我切换到另一个列表框元素并再次运行该函数,则第一次运行和第二次运行的pdf会排列在彼此后面。所以我看到了第一次运行的pdf,然后是第二次运行的pdf。如果我第三次运行它,那么所有三个pdf都排列在彼此后面,依此类推。

你能帮我把当前的pdf显示出来吗?

代码语言:javascript
复制
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")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-22 04:15:14

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

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

代码语言:javascript
复制
pdf.ShowPdf.img_object_li.clear() # clear loaded pages
pdf.ShowPdf().pdf_view(newWindow,pdf_location=cur_file,width=75,height=100).pack()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68876467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档