使用 python tkinter 在单独的 window 中显示 pdf
display pdf in sepearate window with python tkinter
我有一个检查 tkinter 列表框元素是否为 pdf 文件的功能。如果是这样,它应该通过新 window 中的“ShowPdf”显示。我只想看我选的那个pdf
使用该功能一次就可以了。但是,如果我切换到另一个列表框元素并再次 运行 函数,则第一个 运行 和第二个 运行 的 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")
如果您查看 tkPDFViwer
的源代码,您会注意到 ShowPdf
使用 class 变量 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()
我有一个检查 tkinter 列表框元素是否为 pdf 文件的功能。如果是这样,它应该通过新 window 中的“ShowPdf”显示。我只想看我选的那个pdf
使用该功能一次就可以了。但是,如果我切换到另一个列表框元素并再次 运行 函数,则第一个 运行 和第二个 运行 的 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")
如果您查看 tkPDFViwer
的源代码,您会注意到 ShowPdf
使用 class 变量 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()