2013-11-22 4 views
-1
#-*- coding: cp857 -*- 

from tkinter import * 

########################################################### 
rt=Tk()  
rt.title("MY FILM ARCHIVE v1")  
rt.resizable(False, False)  
########################################################### 
def add(): 
    def addFilm(): 
     db = open(r"C:\Users\PC\Desktop\db.txt", "a+") 
     add.enter.get() 
     global film 
     film=enter[addingform,"text"] 
     db.write(film + "\n") 
     db.flush() 
     db.close() 

    addingform=Tk() 
    addingform.title("Add Film!") 
    addingform.resizable(False,False) 
    label=Label(addingform,text="Enter your's film:",fg="red",font=("Flux",15, "bold")) 
    label.pack() 
    enter=Entry(addingform) 
    enter.pack() 
    button=Button(addingform, text="Add!",command=addFilm, font=("Flux",15, "bold")) 
    button.pack() 

button=Button(text="Add Film!",command=add, font=("Flux",15, "bold")) 
button.pack(expand="yes", anchor="center") 

mainloop() 

나는 필름을 쓰고 필름을 추가하기 위해 버튼을 다시 누릅니다. AttributeError : 'function'객체에 'enter'오류가 없습니다AttributeError : 'function'객체에 속성 오류가 없습니다.

+0

전체 스택 추적을 게시하십시오. – PearsonArtPhoto

+0

'add()'함수가'enter'라는 속성을 가지고 있지 않기 때문에 아마'add.enter.get()'줄입니다. 아마도'addFilm()'에 인수로 추가하고'enter.get()'을 사용하고,''Add Film! ''을 만들 때 사용하고 싶을 것입니다. 버튼을 사용하려면'command = lambda enter = enter : addFilm (enter)'를 사용하여 함수에 전달하십시오. – martineau

답변

1

함수의 로컬 변수는 해당 함수의 속성으로 표시되지 않습니다. 중첩 된 범위의 경우, 단지 직접 이름 사용

여기 enter
def add(): 
    def addFilm(): 
     db = open(r"C:\Users\PC\Desktop\db.txt", "a+") 
     global film 
     film = enter.get() 
     db.write(film + "\n") 
     db.flush() 
     db.close() 

가 폐쇄로 addFilm()에 첨부됩니다, 그리고 파이썬은 나중에 역 참조에 대한 함수에 부모 범위 enter를 첨부합니다. 을 수행하려면에 반환 값을 저장해야합니다. 여기에 film에 할당하고 싶습니다.

+0

이제 TypeError가 발생합니다 : 'tuple'개체를 str 암시 적으로 오류로 변환 할 수 없습니다 : / –

관련 문제