0
我最近編寫了一個命令行腳本,該命令行腳本從pdf中取出一系列頁面,並從中創建一個新的pdf。我現在正試圖將這個腳本變成一個小型的gui程序。PyGObject:鏈接到按鈕按鈕的方法無法識別輸入字段中的數據
但是,當單擊按鈕時,我得到的slice方法代碼運行時出現問題。截至目前運行的程序彈出貴,但是當我按一下按鈕我得到的shell中的錯誤信息:
Traceback (most recent call last):
File "pdfSliceGui.py", line 54, in slice
old = oldPDF.get_text()
NameError: global name 'oldPDF' is not defined
似乎是與slice()方法不能夠讀取問題參賽作品是什麼?它看起來是一個範圍問題,slice()方法不能識別條目。我可能會將某些條目轉換爲Ints,但我的主要焦點是使slice()方法與Entry數據一起工作。
這裏是我寫的代碼的相關部分:
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="PDF Slicer")
self.set_size_request(320, 320)
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
self.add(vbox)
label1 = Gtk.Label()
label1.set_text("PDF to extract from")
vbox.pack_start(label1, True, True, 0)
oldPDF = Gtk.Entry()
vbox.pack_start(oldPDF, True, True, 0)
label2 = Gtk.Label()
label2.set_text("PDF to extract to")
vbox.pack_start(label2, True, True, 0)
newPDF = Gtk.Entry()
vbox.pack_start(newPDF, True, True, 0)
label3 = Gtk.Label()
label3.set_text("Start page")
vbox.pack_start(label3, True, True, 0)
start = Gtk.Entry()
vbox.pack_start(start, True, True, 0)
label4 = Gtk.Label()
label4.set_text("End page")
vbox.pack_start(label4, True, True, 0)
end = Gtk.Entry()
vbox.pack_start(end, True, True, 0)
button = Gtk.Button.new_with_label("Slice")
button.connect("clicked", self.slice)
vbox.pack_start(button, True, True, 0)
def slice(self, button):
old = oldPDF.get_text()
new = newPDF.get_text()
s = int(start.get_text()) - 1
e = int(end.get_text())
pdfFileObj = open(old, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pdfWriter = PyPDF2.PdfFileWriter()
for page in range (s, e):
pageObj = pdfReader.getPage(page)
pdfWriter.addPage(pageObj)
pdfOutputFile = open(new, 'wb')
pdfWriter.write(pdfOutputFile)
pdfOutputFile.close()
pdfFileObj.close()
我不知道Python足以知道這是否正確,但我很確定你的小部件變量是'__init__'本地的,因此當它返回時就會丟失。 – andlabs
@andlabs這是正確的,他們需要更改爲'self.oldPDF'等我不會發布它作爲答案,所以你可以賺取點:-) – ptomato