2015-12-03 29 views
1

我正在編寫代碼來打開PDF文件,選擇要裁剪的頁數,然後創建一個新的裁剪文件。Python:EasyGui凍結與fileopenbox()

下面是代碼:

from easygui import * 
from pyPdf import PdfFileReader, PdfFileWriter 

# 1 select a inputfile 
inputFileName = fileopenbox('Please choose a PDF file','', '*.pdf') 

#2 total pages 
inputFile = PdfFileReader(file(inputFileName, 'rb')) 
totalPages = inputFile.getNumPages() 

#3 Enter beginning Page 
begPage = enterbox('Please choose the Beginning Page','it must a number') 
while not begPage.isdigit() or begPage ==0 or int(begPage) > totalPages: 
    msgbox('Please enter a valid digit', '', 'ok') 
    begPage = enterbox('Please choose the Beginning Page','it must a number') 

的事情是在測試這些第一步。當我選擇文件並單擊確定時,fileopenbox凍結,我不能進入下一步。

如果我隔離第一步或第一步和第二步,它工作得很好,但我無法讓它與腳本的其餘部分一起工作(第3步)。

我使用Python的2.7.10我的MacBook Pro的OSX 10.9.2 和easygui 0.97

+0

你的代碼對我來說工作得很好。也許你的pdf格式不正確 - 你試過多個文件嗎?附: 'begPage == 0'應該是'int(begPage)== 0' Python 2.7.10,easygui 0.97,Win7 – SiHa

+0

可能是路徑問題 - inputFileName是否返回文檔的完整路徑?它在我的系統上運行,但OSX可能會有所不同。 – SiHa

+0

我試過用不同的文件,但它仍然凍結。 'InputFileName'返回完整路徑。我在試圖解決問題的不同事情上「點了點頭」,並且我發現如果我點擊儀表板中的python圖標,腳本解凍並進入下一步(2和3)....但這隻會發生在'fileopenbox'上,其餘的框會自動提示出來...... PS感謝「begPage == 0」修復。 – Ruseiro

回答

1

Easygui使用Tkinter的用於其GUI位。

This page說(重點煤礦):

如果您正在使用Python從python.org 64位/ 32位的Python 安裝的Mac OS X 10.6或更高版本,你應該只使用IDLE或 tkinter與更新的第三方Tcl/Tk 8.5,如ActiveTcl 8.5 安裝。

如果您使用的是OS X 10.9或更高版本以及python.org 64位/ 32位安裝程序中的Python,由於Tk問題,應用程序窗口可能無法正確更新 。 安裝最新的ActiveTcl 8.5.18.0如果 可能。(同樣,一個關鍵的OS X 10.9問題的交互使用已被固定爲3.4.0的時候,可能會導致Python的 崩潰, 3.3.3,2.7.6和安裝。)

如果您正在使用Mac OS X 10.6,請勿在Mac OS X 10.6中使用Apple提供的Python 2.6.1中的 中的IDLE或Tkinter。如果可能的話,安裝並使用更新版本的Python和Tcl/Tk。

這聽起來像你的問題,所以它看起來像ActiveTcl是你需要解決您的tk什麼問題。

+0

對不起,但仍然是同樣的問題...我已經完成了整個代碼,除了'fileopenbox'盒,其餘的盒子彈出,因爲他們應該...甚至'filesavebox'(而不是第一個一)。腳本完美運行,除了剛開始的凍結問題之外,還有什麼意思。 – Ruseiro

+0

你有沒有安裝ActiveTcl?事實上,您的代碼可以在我的Windows系統上運行,但不能運行在您的OSX系統上。我並不是說這是絕對的答案,但是,無法打折的做法似乎是一個壞主意。 – SiHa

+0

是的,我已經安裝了ActiveTcl。我試圖在Windows上運行代碼以及它的工作原理......它必須是與OSX相關的東西,甚至更糟,特別是與我的電腦,這使得它更難以解決......我試圖運行EasyGui元素的不同組合,並且它們都工作正常,除了'fileopenbox' ...我試圖在IDLE和Terminal上運行它,並且我都遇到同樣的錯誤。 – Ruseiro