2017-03-13 5 views
0

tkinter 응용 프로그램에서 질문을하고 입력 내용을 기반으로 자리 표시 자 텍스트를 항목으로 바꾸어서 단어 파일을 편집하는 프로젝트를 진행하고 있습니다. '문서'에 '쓰기'속성이없는 오류가 발생했습니다.Python Docx 및 Tkinter 'Document'에 'write'속성이 없습니다.

텍스트에서 자리 표시자가 아닌 다른 것을 검색하면 스크립트가 작동하고 창이 표시됩니다. 그러나 내 자리 표시자가 텍스트에있는 경우 통역사는 필자가 필 요한 것으로 생각하는 것과 관련하여 문제가 발생합니다. 최근에 수업을 사용하여 프로그램을 다시 작성했으며 그 전에는 수업에 참여했습니다. 초기화 기능이 누락 되었습니까?

classes.py

from tkinter import * 
from docx import Document 
import os 
os.chdir("\\Users\\Nick\Desktop") 
doc = Document('TemplateTest.docx') 
paragraphs = doc.paragraphs 

class WebWindow: 
    def __init__(self, master): 
     self.master = master 
     master.title("NAV Report") 

     self.label = Label(master, text="This is our first GUI!") 
     self.label.pack() 

     self.entry = Entry(master, text="Enter") 
     self.entry.pack() 

     self.close_button = Button(master, text="Close", command=master.quit) 
     self.close_button.pack() 

     self.submit = Button(master, text="Submit", command=self.WebsiteChange()) 
     self.submit.pack() 


    def WebsiteChange(self): 
     for paragraph in doc.paragraphs: 
      if '^Websitename' in paragraph.text: 
       paragraph.text = self.entry.get() 
       print(paragraph.text) 
       doc.save(doc) 
       pass 
     print ("test") 

root = Tk() 
WebWindow(root) 
root.mainloop() 

인수를 저장

Traceback (most recent call last): 
    File "C:/Users/Nick/PycharmProjects/classes/class.py", line 36, in <module> 
    WebWindow(root) 
    File "C:/Users/Nick/PycharmProjects/classes/class.py", line 22, in __init__ 
    self.submit = Button(master, text="Submit", command=self.WebsiteChange()) 
    File "C:/Users/Nick/PycharmProjects/classes/class.py", line 31, in WebsiteChange 
    doc.save(doc) 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\site-packages\docx\document.py", line 142, in save 
    self._part.save(path_or_stream) 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\site-packages\docx\parts\document.py", line 129, in save 
    self.package.save(path_or_stream) 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\site-packages\docx\opc\package.py", line 160, in save 
    PackageWriter.write(pkg_file, self.rels, self.parts) 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\site-packages\docx\opc\pkgwriter.py", line 33, in write 
    PackageWriter._write_content_types_stream(phys_writer, parts) 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\site-packages\docx\opc\pkgwriter.py", line 45, in _write_content_types_stream 
    phys_writer.write(CONTENT_TYPES_URI, cti.blob) 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\site-packages\docx\opc\phys_pkg.py", line 155, in write 
    self._zipf.writestr(pack_uri.membername, blob) 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\zipfile.py", line 1581, in writestr 
    self.fp.write(zinfo.FileHeader(zip64)) 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\zipfile.py", line 680, in write 
    n = self.fp.write(data) 
AttributeError: 'Document' object has no attribute 'write' 
Exception ignored in: <bound method ZipFile.__del__ of <zipfile.ZipFile [closed]>> 
Traceback (most recent call last): 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\zipfile.py", line 1595, in __del__ 
    self.close() 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\zipfile.py", line 1608, in close 
    self._write_end_record() 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\zipfile.py", line 1711, in _write_end_record 
    self.fp.write(endrec) 
    File "C:\Users\Nick\AppData\Local\Programs\Python\Python35-32\lib\zipfile.py", line 680, in write 
    n = self.fp.write(data) 
AttributeError: 'Document' object has no attribute 'write' 

답변

1

파일 이름이 필요 전체 추적 오류 : 작동

doc.save('TemplateTest.docx') 
+0

! 나는 이해하지 못한다. 왜 내가 doc = Document ('TemplateTest.docx')를했을 때 변수로 이미 설정했다면 파일 이름을 사용해야 만 하는가? 나는 단지 파일 이름을 사용하여 파일 이름을 호출해서는 안된다. 변수? – nvinger