我的代碼
from tkinter import *
輸入 tkinter 作為 tk
從 tkinter.filedialog 中匯入 * 。
from tkPDFViewer import tkPDFViewer as pdf
def donothing():
x = 0
def open():
file=askopenfile()
v1 = pdf.ShowPdf()
v2 = v1.pdf_view(root,
pdf_location = file,
width = 200, height = 100)
v2.打包()
root = Tk()
root.state('zoomed')
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=donothing)
filemenu.add_command(label="Open", command=open)
filemenu.add_command(label="Save", command=donothing)
filemenu.add_separator()
filemenu.add_command(標簽="退出", 命令=root.quit)
menubar.add_cascade(標簽="檔案", 選單=filemenu)
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Help Index", command=donothing)
helpmenu.add_command(label="關于...", command=donothing)
menubar.add_cascade(label="幫助", menu=helpmenu)
root.config(menu=menubar)
root.mainloop()
如果你打開第一個pdf檔案,它的字很好。 但當你打開另一個pdf檔案時,它就不更新了。那么我怎樣才能解決這個問題呢?謝謝你
uj5u.com熱心網友回復:首先,每次你呼叫pdf_view(...),一個新的tkinter Frame實體就會被創建,然后pack(),所以第二個Frame實體被打包到第一個實體下面。 但是由于第一個Frame有點長,第二個實體超出了可視區域,所以你無法看到它。 你可以通過使用較小的高度來看到第二個,例如,從100改為50,那么你就可以看到兩個框架。
要解決這個問題,你需要銷毀Frame的第一個實體。 另外,tkPDFViewer使用了一個類變數img_object_li(一個list)來存盤所有的圖片(從PDF檔案中提取的),所以你需要在打開另一個PDF檔案之前清除它:
v2 = None # change v2 to global variable
def open()。
global v2
file = askopenfile()
if file:
# 如果舊的實體存在,先銷毀它。
if v2:
v2.destroy()
v1 = pdf.ShowPdf()
# 清理存盤的影像串列
v1.img_object_li.clear()
# 顯示從PDF檔案中提取的新影像 # 顯示從PDF檔案中提取的新影像
v2 = v1.pdf_view(root, pdf_location=file, width=200, height=50) # 小一點的高度
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/317221.html
標籤:
