本文將教我們如何在 Tkinter GUI 顯示 PDF 檔案。我們將使用 PyMuPDF 庫讀取 pdf 檔案並將其轉換為圖像,然後使用 Tkinter 顯示圖像。
對於我們的任務,我們將執行以下步驟 -
閱讀 PDF 檔案。
定義一個變換矩陣,套用於 PDF 頁面以取得影像。
計算總頁數以進行錯誤檢查。
定義 GUI 的畫面(畫布)。
定義一個輔助函數,用於將 PDF 頁面轉換為 PIL 影像。
定義一個函數以在 GUI 中顯示頁面圖像。
新增按鈕、標籤、捲軸等並配置它們。
首先,我們首先在終端機中執行以下命令來安裝 PyMuPDF 套件。
python -m pip install --upgrade pip python -m pip install --upgrade pymupdf
現在我們需要導入我們將使用的函式庫。導入菲茨
import fitz from tkinter import * from PIL import Image, ImageTk
這裡的 fitz 是一個實用程式庫,與 PyMuPDF 庫一起提供,用於將 PDF 頁面獲取為圖像。
我們首先使用 fitz.open 函數開啟要在 GUI 中顯示的 PDF 檔案。這將傳回一個可用於存取頁面的文件物件。
# open pdf file file_name = "sample.pdf" doc = fitz.open(file_name)
現在我們需要指定如何查看頁面。透過定義下面的矩陣函數,我們可以「fitz」來保持 1 倍縮放。
# transformation matrix we can apply on pages zoom = 1 mat = fitz.Matrix(zoom, zoom)
讓我們也計算一下頁數 -
# count number of pages num_pages = 0 for p in doc: num_pages += 1
現在我們將定義一個螢幕,為我們的程式碼添加一個捲軸和一個畫布 -
# initialize and set screen size root = Tk() root.geometry('750x700') # add scroll bar scrollbar = Scrollbar(root) scrollbar.pack(side = RIGHT, fill = Y) # add canvas canvas = Canvas(root, yscrollcommand = scrollbar.set) canvas.pack(side = LEFT, fill = BOTH, expand = 1)
這裡我們的螢幕由名稱「root」表示,尺寸為 750x700。我們還添加了一個滾動條,並指定它位於右側並填充整個高度。同樣,我們將畫布添加到左側並在兩側填充整個螢幕!
為了接收使用者想要閱讀的頁碼,我們需要將頁碼作為輸入。我們可以這樣做 -
# define entry point (field for taking inputs) entry = Entry(root)
# add a label for the entry point label = Label(root, text="Enter page number to display:")
參數「root」告訴我們這些物件將與螢幕「root」相關聯。
現在我們將定義一個輔助函數來從頁碼中取得 PDF 檔案的圖像。
def pdf_to_img(page_num): page = doc.load_page(page_num) pix = page.get_pixmap(matrix=mat) return Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
這裡我們先使用 doc.load_page 載入頁面並將頁碼傳遞為參數。然後我們轉換 PDF 頁面以在第二行中獲取該頁面的像素表示。最後,我們將像素表示轉換為 PIL 影像格式。
現在我們定義一個函數 show_image 來在 Tkinter GUI 中顯示圖像。
def show_image(): try: page_num = int(entry.get()) - 1 assert page_num >= 0 and page_num < num_pages im = pdf_to_img(page_num) img_tk = ImageTk.PhotoImage(im) frame = Frame(canvas) panel = Label(frame, image=img_tk) panel.pack(side="bottom", fill="both", expand="yes") frame.image = img_tk canvas.create_window(0, 0, anchor='nw', window=frame) frame.update_idletasks() canvas.config(scrollregion=canvas.bbox("all")) except: pass
首先,我們從先前定義的入口點讀取頁碼並將其轉換為整數。如果它不是有效的整數,則會發生異常,並且異常區塊會處理它。然後我們檢查頁碼是否在 0 或頁數之間,因為這是我們可以顯示的唯一有效的頁面範圍。然後使用我們之前定義的輔助函數,我們獲得使用者指定頁面的 PIL 映像。然後我們設定框架、面板和畫布以正確顯示該圖像。
接下來我們新增一個按鈕來顯示頁面。我們將函數“show_image”作為命令傳遞。因此,每當按下按鈕時,都會呼叫“show_image”函數。
# add button to display pages button = Button(root, text="Show Page", command=show_image)
現在我們設定之前定義的各種元件的視覺位置 -
# set visual locations label.pack(side=TOP, fill=None) entry.pack(side=TOP, fill=BOTH) button.pack(side=TOP, fill=None)
我們也將初始頁面設定為 PDF 的第一頁,如下 -
entry.insert(0, '1') show_image()
我們設定滾動條
scrollbar.config(command = canvas.yview) root.mainloop()
最後我們關閉 PDF,以免它被我們的電腦損壞。
doc.close()
輸出
運行程式後我們會看到以下輸出!

結論
本文教我們如何使用 PyMuPDF 函式庫以及 Pillow 和 Tkinter 在 Tkinter GUI 中顯示 PDF 檔案。我們也了解如何計算頁數、將 PDF 頁面轉換為圖像、製作互動式按鈕以及如何直觀地放置構成 GUI 的不同元素。
以上是如何在Tkinter GUI Python新增PDF?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具