#python #python-3.x #tkinter
#python #python-3.x #tkinter
Вопрос:
#передача пути к файлу Pdf откроет окно программы чтения PDF
def text_extract(path):
page_num = 0 # variable assignment
root = Tk() tkinter wiindow
pdf = PdfFileReader(path)
def page_update(page_num): #function to update text gui on the basis of page number
page_obj = pdf.getPage(page_num)
txt = page_obj.extractText()
text_wig.delete("1.0", "end")
text_wig.insert(END,txt)
def page_prev(e=1): #to see previous page
global page_num
if page_num <= 0:
messagebox.showinfo('Alert','Its a first page')
else:
page_num = page_num -1
page_update(page_num)
def page_next(e=1): # for next page
global page_num
if page_num >= pdf.numPages:
messagebox.showinfo('Alert','Its a last page')
else:
page_num = page_num 1
page_update(page_num)
Button(root, text='Prev',command = page_prev).grid(row=0, column=1)
Button(root, text='Next',command = page_next).grid(row=0, column=2)
page_obj = pdf.getPage(page_num)
txt = page_obj.extractText()
text_wig = Text(root)
text_wig.grid(row=1, column=1, rowspan=10,columnspan=10)
text_wig.delete("1.0", "end")
text_wig.insert(END,txt)
root.mainloop()
#это показывает только первую страницу pdf, кнопки next или prev не работают
Комментарии:
1. Сначала исправьте отступ кода. Кстати, поскольку
page_num
, по-видимому, оно объявлено внутриtext_extract()
и обаprev_page()
иnext_page()
также определены внутри функции, вам нужно использоватьnonlocal
вместоglobal
.2. нелокальный работает отлично, спасибо
Ответ №1:
если внутри функции есть значение, и вам нужно его использовать или отредактировать вне функции, вам придется написать global page_num
, прежде чем определять или редактировать его